Chinaunix首页 | 论坛 | 博客
  • 博客访问: 132420
  • 博文数量: 52
  • 博客积分: 203
  • 博客等级: 入伍新兵
  • 技术积分: 310
  • 用 户 组: 普通用户
  • 注册时间: 2011-04-20 10:43
文章分类

全部博文(52)

文章存档

2015年(2)

2012年(11)

2011年(39)

分类: C/C++

2012-11-15 14:52:02

ldd查看应用程序链接了哪些动态库。

 

nm列出目标文件中包含的符号信息。

 

size列出各个段的大小及总的大小。

 

strings列出文件中的字符串。

 

readelf读取elf文件的完整结构。

 

objdump导出目标文件的相关信息(elf文件相关工具的源头)。

 

gdb对文件的执行过程进行调试分析,设置断点(b)、单步执行(n)、函数调用追踪(bt)、反汇编(disassemble)

 

strace跟踪程序中的系统调用及信号处理信息。

 

LD_DEBUG通过设置这个环境变量,可以方便的看到 loader 的加载过程(包括库的加载,符号解析等过程),使用【LD_DEBUG=help 可执行文件路径】可查看使用帮助。

 

LD_PRELOAD环境变量指定的共享库会被预先加载,如果出现重名的函数,预先加载的函数将会被调用,如在预先加载的库中包含自定义的puts函数,则在执行程序时将使用自定义版本的puts函数,而不是libc库中的puts函数。

 

proc文件系统中包含进程的地址空间映射关系,具体查看/proc/进程id/maps文件的内容。

 

valgrind工具对可执行程序文件进行内存检查(还有cache模拟、调用过程跟踪等功能),以避免内存泄露等问题。

 

addrline将可执行文件中的地址转换为其在源文件中对应的位置(文件名:行号)。


pmap查看进程占用的内存及使用地址空间映射。

阅读(839) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~