GNU为GCC编译器提供了配套的辅助工具集(Binutils)http://www.gnu.org/software/binutils/
1. addr2line
①将指定地址转换为对应的文件名和行号
②常用于分析和定位内存访问错误的问题
③示例:定位0地址访问问题
*开启core dump选项:ulimit -c unlimited(关闭:ulimit -c 0 查看是否开启:ulimit -c)
*运行程序,并生成崩溃时的core文件
*读取core文件,获取IP寄存器的值:dmesg core
*使用addr2line定位代码行:addr2line 0x08048000 -f -e test.out
2. strip
①剔除程序文件中的调试信息,减小目标程序的大小
②strip test.out
3. ar
①打包目标文件: ar crs libname.a x.o y.o
②解压目标文件: ar x libname.a
4. nm
①列出目标文件中的标识符(变量名,函数名)
②输出结果由三部分组成:{地址,段,标识符}
5. objdump
①反汇编目标文件,查看汇编到源码的映射:objdump -D -S test.out
②查看目标文件中的详细信息:objdump -h test.out
6. readelf
①查看目标文件所依赖的动态库: readelf -d Test
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)