Tips:GDB调试运行地址与链接地址不一致
一般情况下,我们调试的目标文件链接地址与运行地址是一致的,这时可以使用
gdb --tui filename
或者进入gdb后,使用file命令进行加载
file filename
加载后,GDB中实际运行地址与符号表链接是正常的
如果遇到运行地址和链接地址不一致,就不能采用上述方法加载,否则会造成GDB根据运行地址链接的符号表不一致,导致不能单步调试。此时可以使用下列命令
add-symbol-file filename text段起始地址 -s .text.boot text.boot段起始地址 -s .rodata rodata段起始地址
其中:
text段起始地址
text.boot段起始地址
rodata段起始地址
可以通过具体编译器的readelf -S filename来读取
NOTE:读取到的地址为段链接地址,根据链接起始地址,计算出各段偏移,再加上运行起始地址,就是各段实际起始地址