[英]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
運行。 如果你使用start
和disas main
,你會得到非常不同的結果。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.