gdb中的数字是多少?

时间:2018-10-15 15:40:22

标签: gdb

我在gdb中反汇编了我的C代码(只是printf(“ hello world”)),我得到了

0x0000000000001135 <+0>: push rbp 
0x0000000000001136 <+1>: mov rbp,rsp
0x0000000000001139 <+4>: lea rdi [rip+0xec4] # 0x2004
0x0000000000001140 <+11>: mov eax,0x0
0x0000000000001145 <+16>: call 0x1030 <printf@plt>
0x000000000000114a <+21>: mov eax,0x0 
0x000000000000114f <+26>: pop rbp
0x0000000000001150 <+27>: ret 

我将中断点设置为主要和考试副本寄存器。

rip            0x555555555139   0x555555555139 <main+4>

在gdb中,<>字体中的那些数字是什么? 我只能访问翻录指向的内存。

如果这些数字不是内存,我可以更改使gdb显示内存的格式吗?

对不起,我的英语不好。

1 个答案:

答案 0 :(得分:0)

  

在gdb中,<>字体中的那些数字是什么?我只能访问翻录指向的内存。

您正在处理一个position independent executable,该链接链接到地址0的加载,但在运行时被重新定位到另一个地址(在您的情况下,{{ 1}})。

您可能在运行应用程序之前(即在发生重定位之前)执行了0x555555554000 。如果相反,您可以这样做:

disas

然后GDB将向您显示重新定位的说明。