avatar
文章
40
标签
11
分类
6

Home
Archives
Tags
Categories
Anthony Li's Blogs
搜索
Home
Archives
Tags
Categories

Anthony Li's Blogs

Linux ld命令使用方法
发表于2024-05-05|computer_sciencelinker
1. ld命令: linux链接器作用: 将一系列目标文件(.o)和静态库文件(.a)链接起来(动态库文件.so也可能作为ld的输入文件) 2. 常用选项注意:对于单字母的选项(如-l等),选项的参数直接跟在选项之后,用不用空格分隔都可以。 2.1 -l <namespec>或者--library=<namespec>使用<namespec>标识的库文件(动态库lib.so优先于静态库lib.a)。 如果<namespec>是:filename的形式,查找文件名为filename的库文件。 2.2 -L <searchdir>或者--library-path=<searchdir>添加一个查找库文件(和控制脚本)的目录<searchdir>以供-l选项使用,多个此选项之间的顺序关系为在命令行出现的顺序,最后为默认查找目录。 默认查找目录是系统依赖的,较为复杂,如/lib/x86_64-linux-gnu。 2.3 -rpath=<dir>添加<dir>到此次生 ...
Linux加载器、加载、动态链接器与动态链接
发表于2024-05-05|computer_sciencelinker
1. 别名和对应的文件别名包括: 动态链接器(dynamic linker),加载器(loader),动态加载器(dynamic loader),运行时链接器(run-time linker),ELF解释器(ELF interpreter),ld.so,ld-linux.so 上述这些描述的是同一件事,其对应的文件为: ld.so,ld-linux.so,/lib/ld-linux.so.1,/lib/ld-linux.so.2,/lib64/ld-linux-x86-64.so.2 在现代linux机器上,一般使用的是/lib/ld-linux.so.2和/lib64/ld-linux-x86-64.so.2,用于处理ELF格式二进制文件 2. 动态链接器运行方式 间接运行: 通过运行一个动态链接的程序或者共享库,ELF文件会将动态链接器存放在.interp段中 直接运行: /lib/ld-linux.so.* [OPTIONS] [PROGRAM [ARGUM ...
Linux GDB反向执行
发表于2024-05-02|computer_sciencegdb
1. 应用场景反向执行(Reverse Execution)应用在:当发现执行太过了的时候,关注的问题可能已经发生了,需要反向执行。 需要目标环境支持,不是所有目标环境都可以实现反向执行的。 2. 程序执行的记录(record)和重放(replay)record会拖慢程序执行速度。 如果执行日志中包括下一条指令的执行记录,GDB会使用replay mode,此时运行程序不会真正执行代码,而是从执行日志中恢复程序状态。 否则如果执行日志中不包括下一条指令的执行记录,GDB会使用record mode,此时运行程序会正常执行,但GDB会记录执行日志以备将来replay。 即使程序运行的平台不支持Reverse Execution,在执行日志记录的范围内,GDB也可以通过replay支持Reverse Execution。 在反向执行时,如果执行日志包括先前指令的记录,GDB会使用replay mode,否则,如果平台支持反向执行,GDB会使用record mode,如果不支持则stop。 3. record和replay相关的命令3.1 record [METHOD]缩写为rec [MET ...
Linux GDB Watchpoint
发表于2024-05-02|computer_sciencegdb
1. 基本概念watchpoint又称data breakpoint,用于监控某个表达式,当它的值改变时stop程序。 表达式可以是单个变量,也可以包含操作符(任意原语言中有效的操作符)。 2. 分类2.1 software watchpointGDB单步执行程序,然后每次都计算表达式值。因此程序执行速度可能慢了数百倍,而且它在被监控值改变后的下一条语句处才报告值改变,而非在确切的CPU指令处。 2.2 hardware watchpoint依赖硬件支持(如x86架构),不会减慢程序执行速度,且在改变被监控值的CPU指令执行时即能及时报告。 GDB会尽可能创建hardware watchpoint。 有时GDB不能创建hardware watchpoint,可能的原因包括: 要监控的内存区域过大。(此时GDB可能把它拆分成多个小的hardware watchpoint)。 已经设置了太多hardware watchpoint。但可能到程序resume执行时(而不是创建watchpoint时)GDB才会报告”Hardware watchpoint : Could not insert ...
Linux GDB 多线程调试
发表于2024-05-02|computer_sciencegdb
1. All-Stop Mode这是GDB的默认模式(共两个模式,另一个为Non-Stop Mode)。 当一个线程stop时(比如因为hit断点),所有线程都stop。 类似地,当继续执行这个线程时(比如使用step或者next命令),所有其他线程也会恢复执行,但它们不受当前线程的step或者next命令控制而自由执行(因为线程调度依赖kernel,而不受GDB控制),因此可能执行任意条语句。而且当这些其他线程遇到断点时会导致GDB发生自动线程切换,此时原线程的step或者next命令甚至可能还没执行完。 1.1 锁住OS scheduler这是为了在恢复执行时只允许一个线程运行。 scheduler锁定模式有多种,使用命令set scheduler-locking <mode>设置,show scheduler-locking获取。 可用的模式有: off 无锁定,任意线程可以任意运行。 on 只有当前线程可以运行,其他线程依然stop。 step 当单步执行时效果类似on,使用其他执行命令(如continue, until, finish)时类似off。(由于机 ...
Linux GDB Convenience Variables
发表于2024-05-01|computer_sciencegdb
1. 基本介绍 形式为以$开头的名字(以$开头的数字不是) 无固定类型,甚至可以是结构体或者数组 2. 赋值使用set命令,如set $foo = *object_ptr 3. 使用示例不断使用回车遍历数组: 12set $i = 0p arr[$i++]
Linux GDB TUI(Text User Interface)
发表于2024-05-01|computer_sciencegdb
1. GDB tui常用命令1.1 启动和退出tui模式 分别是tui enable(缩写为tui e)和tui disable(缩写为tui d)命令 或者使用快捷键ctrl+x+a,按第一次进入,第二次退出 1.2 ctrl+L 刷新屏幕在程序使用标准输出和标准错误打印时屏幕可能乱掉,可以使用ctrl+L进行刷新 ctrl+L不会被记在命令历史里,下一次ENTER不会重复ctrl+L 1.3 info win命令列出当前显示的所有窗口 1.4 focus命令缩写为fs,改变焦点到不同窗口,使用方式focus [WINDOW-NAME | next | prev] 1.5 查看文档使用help text-user-interface查看tui相关所有命令 2. CGDBCGDB是GDB的一个控制台前端(Console Frontend),它还是使用GDB进行实际调试 GDB的tui模式不支持源码窗口和命令窗口垂直分屏,因此使用CGDB 2.1 使用1. 启动在shell中输入cgdb启动程序 调用方式类似GDB: 1cgdb [cgdb options] [--] [gdb ...
过邺下吊高神武
发表于2024-05-01|literature(文学)
过邺下吊高神武 [清] 袁枚 唱罢阴山敕勒歌,英雄涕泪老来多。 生持魏武朝天笏,死授条侯杀贼戈。 六镇华夷传露布,九龙风雨聚漳河。 祇今尚有清流月,曾照高王万马过。
Linux查看二进制文件内容
发表于2024-04-24|computer_science
1. 命令1hexdump -C <file> 或者 1hd <file> hd是hexdump的符号链接
临江仙·夜归临皋
发表于2023-04-01|literature(文学)
临江仙·夜归临皋 [宋] 苏轼 夜饮东坡醒复醉,归来仿佛三更。家童鼻息已雷鸣。敲门都不应,倚杖听江声。 长恨此身非我有,何时忘却营营。夜阑风静縠纹平。小舟从此逝,江海寄余生。
1…34
avatar
Anthony Li
文章
40
标签
11
分类
6
Follow Me
最新文章
赠药山高僧惟俨二首2025-08-30
桃花庵歌2025-06-28
自遣2025-04-06
赠卫八处士2024-12-03
Linux ps常用命令2024-12-03
分类
  • computer_science26
    • gdb6
    • git2
    • linker6
    • sanitizer5
  • literature(文学)14
标签
linker shell git c++ history(历史) poem(诗歌) loader sanitizer excerpt(摘抄) linux gdb
归档
  • 八月 20251
  • 六月 20251
  • 四月 20251
  • 十二月 20242
  • 十一月 20242
  • 十月 20244
  • 九月 20245
  • 八月 20243
网站资讯
文章数目 :
40
本站访客数 :
本站总访问量 :
最后更新时间 :
©2019 - 2025 By Anthony Li
框架 Hexo|主题 Butterfly
搜索
数据库加载中