簡體   English   中英

gdb 如何簡化內存地址/偏移量?

[英]gdb how to simplify memory address/offset?

這是我的示例 c 代碼

user@linux:~$ gdb -q hello
Reading symbols from hello...done.
(gdb) 
(gdb) list 
1   #include<stdio.h>
2   
3   int main()
4   {
5       printf("Hello World!\n");
6       return 0;
7   }
8   

這是它的匯編代碼。

(gdb) disassemble main 
Dump of assembler code for function main:
   0x000000000000063a <+0>: push   %rbp
   0x000000000000063b <+1>: mov    %rsp,%rbp
   0x000000000000063e <+4>: lea    0x9f(%rip),%rdi        # 0x6e4
   0x0000000000000645 <+11>:    callq  0x510 <puts@plt>
   0x000000000000064a <+16>:    mov    $0x0,%eax
   0x000000000000064f <+21>:    pop    %rbp
   0x0000000000000650 <+22>:    retq   
End of assembler dump.
(gdb) 

內存地址包含 18 個字符,其中大部分是數字0

不是顯示所有數字,是否可以簡化它?

假設0x63a而不是0x000000000000063a

內存地址包含 18 個字符,其中大部分是數字 0

這里沒有“記憶”。 您顯然是在談論顯示地址。

假設 0x63a 而不是 0x000000000000063a

你是一個64位系統上,每個地址正好是64位。 將地址顯示為 64 位以外的數字會非常混亂。

PS 你有一個與位置無關的可執行文件。 實際上並不在地址0x000000000000063a運行 如果你使用startdisas main ,你會得到非常不同的結果。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM