posts - 134,comments - 22,trackbacks - 0

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将可执行文件中的地址转换为其在源文件中对应的位置(文件名:行号)。

posted on 2011-01-19 00:05 何克勤 阅读(413) 评论(0)  编辑  收藏 所属分类: C/C++GNU Linux/Unix

只有注册用户登录后才能发表评论。


网站导航:
博客园   IT新闻   Chat2DB   C++博客   博问