让gdb像objdump一样反汇编,显示对应的机器码列,该如何做?
如题 disassemble 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:56 编辑
刚才查了一下,知道了
用disassemble /r 命令
这个最新的gdb7.0支持,以前的好像不行 disassemble
显示出机器码干什么用? disassemble有时回出问题,显示出来有一定的参考作用 请问下楼主 gdb如何学习?参考哪些资料学习比较好/。:em25: 我是在baidu上找一些入门资料看的,先把基本的命令掌握,然后在实际的调试中碰到问题时再去查。
我想如果有那么一本gdb参考书几百页,你从头到尾看一遍,也不一定能记住多少。
还是用多少,学多少。
有可能的话,可以看看gdb的源码,这样理解更深刻。
说了这么多,我其实也是才入门的。 允许我吹牛一句哈,/r这个功能是我强烈要求严正抗议郑重建言, 才有人写的。。。gdb这么多年来一直用x命令看opcode,土死了。 回复 9# 帅绝人寰
你的面子很大啊。加/r的那个patch是由两个redhat的大牛,一个google大牛,一个ibm大牛,一个cs大牛写的。
页:
[1]
2