【问题标题】:Why I can't disassemble this user space address?为什么我不能反汇编这个用户空间地址?
【发布时间】:2011-06-10 12:37:46
【问题描述】:
Dump of assembler code for function foo@plt:
0x0000000000400528 <foo@plt+0>: jmpq   *0x2004d2(%rip)        # 0x600a00 <_GLOBAL_OFFSET_TABLE_+40>
0x000000000040052e <foo@plt+6>: pushq  $0x2
0x0000000000400533 <foo@plt+11>:    jmpq   0x4004f8
(gdb) disas 0x4004f8
No function contains specified address.

我知道0x4004f8是过程联动表的入口,为什么我不能disas呢?

【问题讨论】:

    标签: gdb shared-libraries


    【解决方案1】:

    disas有一个地址需要找到该地址所在的函数才能知道要反汇编多少。

    disas 带有两个参数,或者x/i

    另见: How can I force GDB to disassemble?

    【讨论】:

    • plt用来解析动态链接的function,动态的variable呢?
    • 另外,0x4004f8 怎么可能不包含在任何函数中?应该总是有一个包装这个地址IMO的函数......
    • 0x4004f8 可能在函数中,但 gdb 出于某种原因无法理解。给 gdb 一个范围并完成它?
    • 是的,它可以工作,但我想进一步了解共享库的工作原理(尤其是其中的变量是如何被引用的),你想要一个单独的线程吗? :)
    • 是的,这对我来说听起来像是一个不同的问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-11-09
    • 2015-07-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多