免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 7992 | 回复: 10
打印 上一主题 下一主题

如何产生gdb下的汇编代码 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-01-13 09:38 |只看该作者 |倒序浏览
大家都知道gdb调试的时候,如果使用命令
display /i $pc
每次程序中断后就可以看到即将被执行的下一条汇编指令比如:
0x8048771 <main+27>:        movl   $0x0,-0x28(%ebp)
这样只能一条一条的看,很不方便,能不能把所有的汇编指令一次性的输出?

论坛徽章:
0
2 [报告]
发表于 2009-01-13 09:39 |只看该作者
哦 帮顶
见过VC产生ASM代码

论坛徽章:
0
3 [报告]
发表于 2009-01-13 14:10 |只看该作者
gcc 的-S 选项

论坛徽章:
0
4 [报告]
发表于 2009-01-13 14:17 |只看该作者
真服了你们了,用gdb连手册都不看,你还用什么用,还调试。。。扯淡
x/10i $pc    //10 instructions

论坛徽章:
0
5 [报告]
发表于 2009-01-13 15:38 |只看该作者
1. 用GDB的disassemble命令。
2. 如果只是静态分析,可以用objdump -d全部反汇编了慢慢看。

论坛徽章:
0
6 [报告]
发表于 2009-01-13 18:50 |只看该作者
原帖由 Cyberman.Wu 于 2009-1-13 15:38 发表
1. 用GDB的disassemble命令。
2. 如果只是静态分析,可以用objdump -d全部反汇编了慢慢看。

就是它了,disassemble命令可以把当前帧的汇编指令全部输出,现在我想把这些汇编指令重定向到一个文件,好像gdb不能办到。

论坛徽章:
0
7 [报告]
发表于 2009-01-13 20:31 |只看该作者
原帖由 chary8088 于 2009-1-13 09:39 发表
哦 帮顶
见过VC产生ASM代码


Ctrl+F11就可以(在调试的时候转到汇编代码)

论坛徽章:
0
8 [报告]
发表于 2009-02-05 11:21 |只看该作者
原帖由 kenby 于 2009-1-13 18:50 发表

就是它了,disassemble命令可以把当前帧的汇编指令全部输出,现在我想把这些汇编指令重定向到一个文件,好像gdb不能办到。


GDB好像是不支持直接把命令输出到文件,以前我在自己做的一个反汇编VxWorks for PowerPC的程序中做过这种支持,最后一个参数缺省时显示到屏幕,否则写到最后一个参数指定的文件中。

不过有一种变通的方法,用gdb | tee you_file_name,这样gdb的所有输出(当然也包括了你输入的命令)同时也都写到了指定的文件中,退出来之后再打开文件看就可以了。

论坛徽章:
0
9 [报告]
发表于 2009-02-05 13:30 |只看该作者
gdb中也可以重定向的啊.

论坛徽章:
0
10 [报告]
发表于 2009-02-05 16:25 |只看该作者
原帖由 argstormsky 于 2009-2-5 13:30 发表
gdb中也可以重定向的啊.


不可以吧? 我记得gdb手册里说, 如果加上管道, 它就不知道要调试的是哪个程序了。

(gdb) dis main | grep return

这样肯定不成吧?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP