Linux下可执行程序调试信息的分离及release程序的调试
来源:互联网 发布:淘宝开店手机充值 编辑:程序博客网 时间:2024/04/28 15:21
前两天在群里看到在讨论如何把debug版中的符号表加到release版本中,觉得这个非常有用,所以学习一下。
使用的工具是objcopy。
如果要生成单独的调试信息文件,命令如下:
objcopy –only-keep-debug foo foo.dbg
如果要去除调试信息(还可以使用strip命令),命令如下:
objcopy --only-keep-debug foo foo.dbg
如果要添加调试信息文件链接,命令如下:
objcopy --add-gnu-debuglink=foo.dbg foo
确认调试信息文件链接,命令如下:
objdump -s -j .gnu_debuglink foo
调试release程序前首先需要从debug版本中获取符号表信息,这个是通过objcopy这个利器,命令如下:
objcopy --only-keep-debug debug info.dbg
其中debug是带有符号表的可执行程序,info.dbg是保存符号表的文件。
在使用gdb调试release程序的时候,使用--symbol命令来加载前面生成的符号表,命令如下:
[root@CentOS_192 debug]#gdb -q --symbol=info.dbg --exec=release
Reading symbols from /root/debug/info.dbg...done.
(gdb) start
Temporary breakpoint 1 at 0x4004ef: filetest.c, line 11.
Starting program: /root/debug/release
Temporary breakpoint 1, main () at test.c:11
11 return func();
Missing separate debuginfos, use: debuginfo-install glibc-2.12-1.80.el6.x86_64
(gdb)
Reading symbols from /root/debug/info.dbg...done.
(gdb) start
Temporary breakpoint 1 at 0x4004ef: filetest.c, line 11.
Starting program: /root/debug/release
Temporary breakpoint 1, main () at test.c:11
11 return func();
Missing separate debuginfos, use: debuginfo-install glibc-2.12-1.80.el6.x86_64
(gdb)
- Linux下可执行程序调试信息的分离及release程序的调试
- hadoop下的程序测试及调试信息
- 为 VC6 程序的 Release 版本添加调试信息
- 为 VC6 程序的 Release 版本添加调试信息
- Linux下的程序调试
- Linux下的程序调试
- gdb调试linux可执行程序
- Release下轻松调试程序。
- Debug和Release状态下的程序调试
- release下程序崩溃问题的调试(windows)
- Linux下将动态库的调试信息分离
- 如何调试程序的 Release 版本
- 如何调试程序的Release版本?
- 如何调试程序的 Release 版本
- 如何调试程序的 Release 版本?(转)
- 怎样“调试” Release 版的程序
- 如何调试程序的 Release 版本
- 如何调试程序的 Release 版本
- linux getopts 学习笔记
- protobuf在网络编程中的应用思考
- PMBOK学习笔记-项目与战略计划
- shell中的getopt与getopts
- 特殊窗体设置
- Linux下可执行程序调试信息的分离及release程序的调试
- android文件流操作
- PMBOK学习笔记-项目管理办公室
- 使用shell命令修改多个文件
- Eclipse设置、调优、使用
- LoadRunner数据库监控指标
- 在字符串中,插入字符的统计个数
- Wireshark抓包工具使用教程以及常用抓包规则
- Java-使用WeakHashMap做缓存