博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
理解可执行程序的各种神器
阅读量:4572 次
发布时间:2019-06-08

本文共 661 字,大约阅读时间需要 2 分钟。

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查看进程占用的内存及使用地址空间映射。

 

 

 

转载于:https://www.cnblogs.com/yunnotes/archive/2013/04/19/3032405.html

你可能感兴趣的文章
SQL Server 2005“备份集中的数据库备份与现有的数据库不同”解决方法
查看>>
如何在 Centos 7.x 上以源码包安装最新版 Git
查看>>
2017知乎看山杯总结(多标签文本分类)
查看>>
uva 12003 Array Transformer (大规模阵列)
查看>>
mysql5.7二进制包安装方式
查看>>
SQL With As 用法Sql 四大排名函数(ROW_NUMBER、RANK、DENSE_RANK、NTILE)简介
查看>>
装饰者模式——Java设计模式
查看>>
HTTP状态码
查看>>
39.递推练习: 菲波那契数列(2)
查看>>
47..贪心 失恋28天-追女孩篇
查看>>
排序精讲
查看>>
【bzoj3172】 Tjoi2013—单词
查看>>
【uoj2】 NOI2014—起床困难综合症
查看>>
js return的用法
查看>>
for_each使用方法详解[转]
查看>>
Apache Storm 与 Spark:对实时处理数据,如何选择【翻译】
查看>>
c :set标签的陷阱(未解决)
查看>>
线性筛素数(欧拉筛)
查看>>
java 序列化与反序列化
查看>>
nginx安装环境
查看>>