为什么我能';你不能反汇编这个用户空间地址吗? 函数的汇编程序代码转储foo@plt: 0x00000000000400528:jmpq*0x2004d2(%rip)#0x600a00 0x000000000040052e:pushq$0x2 0x0000000000400533:jmpq 0x4004f8 (gdb)disas 0x4004f8 没有函数包含指定的地址。

为什么我能';你不能反汇编这个用户空间地址吗? 函数的汇编程序代码转储foo@plt: 0x00000000000400528:jmpq*0x2004d2(%rip)#0x600a00 0x000000000040052e:pushq$0x2 0x0000000000400533:jmpq 0x4004f8 (gdb)disas 0x4004f8 没有函数包含指定的地址。,gdb,shared-libraries,Gdb,Shared Libraries,I knwo0x4004f8是过程链接表的入口点,但是为什么我不能disas它呢?disas只有一个地址,需要找到该地址所包含的函数才能知道要分解多少 使用带有两个参数的disas,或x/i 另见: plt用于解析动态链接的函数,那么动态变量又如何呢?还有,0x4004f8如何不包含在任何函数中?应该总是有一个函数将这个地址包装起来…0x4004f8可能在函数中,但由于某种原因gdb无法理解它。给gdb一个范围,并完成了吗?是的,它可以工作,但我想进一步研究共享库是如何工作的(特别是其中的变量是

I knwo
0x4004f8
是过程链接表的入口点,但是为什么我不能
disas
它呢?

disas
只有一个地址,需要找到该地址所包含的函数才能知道要分解多少

使用带有两个参数的
disas
,或
x/i

另见:

plt用于解析动态链接的
函数
,那么动态
变量
又如何呢?还有,
0x4004f8
如何不包含在任何函数中?应该总是有一个函数将这个地址包装起来…0x4004f8可能在函数中,但由于某种原因gdb无法理解它。给gdb一个范围,并完成了吗?是的,它可以工作,但我想进一步研究共享库是如何工作的(特别是其中的变量是如何被引用的),您想为此单独创建一个线程吗?:)是的,对我来说,这听起来是一个不同的问题。
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.