qtdszws 发表于 2010-03-22 21:21

让gdb像objdump一样反汇编,显示对应的机器码列,该如何做?

如题

liying_gg 发表于 2010-03-22 21:28

disassemble

qtdszws 发表于 2010-03-22 21:32

objdump的输出
0000000000401be0 <_init>:
401be0:       48 83 ec 08             sub    $0x8,%rsp
401be4:       e8 03 06 00 00          callq4021ec <call_gmon_start>
401be9:       e8 62 06 00 00          callq402250 <frame_dummy>
401bee:       e8 bd ca 0a 00          callq4ae6b0 <__do_global_ctors_aux>
401bf3:       48 83 c4 08             add    $0x8,%rsp
401bf7:       c3                      retq   
gdb的输出
(gdb) disassemble _init
Dump of assembler code for function _init:
0x0000000000401be0 <_init+0>:   sub    $0x8,%rsp
0x0000000000401be4 <_init+4>:   callq0x4021ec <call_gmon_start>
0x0000000000401be9 <_init+9>:   callq0x402250 <frame_dummy>
0x0000000000401bee <_init+14>:callq0x4ae6b0 <__do_global_ctors_aux>
0x0000000000401bf3 <_init+19>:add    $0x8,%rsp
0x0000000000401bf7 <_init+23>:retq   
End of assembler dump.
没有机器码

qtdszws 发表于 2010-03-22 21:53

本帖最后由 qtdszws 于 2010-03-22 21:56 编辑

刚才查了一下,知道了
用disassemble /r 命令
这个最新的gdb7.0支持,以前的好像不行

emmoblin 发表于 2010-03-22 23:07

disassemble
显示出机器码干什么用?

qtdszws 发表于 2010-03-23 09:05

disassemble有时回出问题,显示出来有一定的参考作用

nine8 发表于 2010-03-23 15:23

请问下楼主 gdb如何学习?参考哪些资料学习比较好/。:em25:

qtdszws 发表于 2010-03-23 15:39

我是在baidu上找一些入门资料看的,先把基本的命令掌握,然后在实际的调试中碰到问题时再去查。

我想如果有那么一本gdb参考书几百页,你从头到尾看一遍,也不一定能记住多少。

还是用多少,学多少。

有可能的话,可以看看gdb的源码,这样理解更深刻。

说了这么多,我其实也是才入门的。

帅绝人寰 发表于 2010-04-07 11:37

允许我吹牛一句哈,/r这个功能是我强烈要求严正抗议郑重建言, 才有人写的。。。gdb这么多年来一直用x命令看opcode,土死了。

jzhang918 发表于 2010-04-10 23:43

回复 9# 帅绝人寰


    你的面子很大啊。加/r的那个patch是由两个redhat的大牛,一个google大牛,一个ibm大牛,一个cs大牛写的。
页: [1] 2
查看完整版本: 让gdb像objdump一样反汇编,显示对应的机器码列,该如何做?