GDB:为什么运行后内存映射会发生变化?
为什么运行GDB:为什么运行后内存映射会发生变化?,gdb,Gdb,为什么运行后GDB中的内存映射会发生变化? 例如,下面的主函数最初为0x00000560,然后在run之后为0x80000560 是否可以以从一开始就显示真实映射的方式运行/配置gdb Reading symbols from prog...(no debugging symbols found)...done. (gdb) disas main Dump of assembler code for function main: 0x00000560 : push %ebp 0
后GDB中的内存映射会发生变化?
例如,下面的主函数最初为0x00000560,然后在run
之后为0x80000560
是否可以以从一开始就显示真实映射的方式运行/配置gdb
Reading symbols from prog...(no debugging symbols found)...done.
(gdb) disas main
Dump of assembler code for function main:
0x00000560 : push %ebp
0x00000561 : mov %esp,%ebp
0x00000563 : sub $0x10,%esp
0x00000566 : call 0x580
0x0000056b : add $0x1a95,%eax
0x00000570 : movl $0x0,-0x4(%ebp)
0x00000577 : addl $0x1,-0x4(%ebp)
0x0000057b : mov -0x4(%ebp),%eax
0x0000057e : leave
0x0000057f : ret
End of assembler dump.
(gdb) run
Starting program: /home/mike/gdb/prog
[Inferior 1 (process 9607) exited with code 01]
(gdb) disas main
Dump of assembler code for function main:
0x80000560 : push %ebp
0x80000561 : mov %esp,%ebp
0x80000563 : sub $0x10,%esp
0x80000566 : call 0x80000580
0x8000056b : add $0x1a95,%eax
0x80000570 : movl $0x0,-0x4(%ebp)
0x80000577 : addl $0x1,-0x4(%ebp)
0x8000057b : mov -0x4(%ebp),%eax
0x8000057e : leave
0x8000057f : ret
End of assembler dump.
例如,下面的主函数最初为0x00000560,运行后为0x80000
您有一个位置独立的可执行文件(实际上只是一种特殊的共享库,与-pie
标志链接)。它在开始执行之前被重新定位到一个随机地址
请注意,GDB通常会尝试禁用地址随机化,因此在GDB下运行时,随机地址实际上不会有所不同。但是,当程序在GDB之外运行时,或者如果使用(GDB)将禁用随机化设置为off时,它会有所不同
例如,下面的主函数最初为0x00000560,运行后为0x80000
您有一个位置独立的可执行文件(实际上只是一种特殊的共享库,与-pie
标志链接)。它在开始执行之前被重新定位到一个随机地址
请注意,GDB通常会尝试禁用地址随机化,因此在GDB下运行时,随机地址实际上不会有所不同。但是,当程序在GDB之外运行时,或者如果使用(GDB)将禁用随机化设置为off时,它会有所不同