GDB:相对于共享库的地址

时间:2017-02-21 06:45:55

标签: linux debugging gdb shared-libraries

我正在调试一个拒绝在我们的自定义linux环境中工作的程序。我无法访问其源代码,因此无法编译或添加任何内容。 问题出在其中一个共享库中,我知道大概的地址范围(没有别的)。问题是:如何在没有像

这样的手工劳动的情况下在该位置设置断点
info sharedlibrary
<find address of library.so>
break <address of library.so>+<location>

1 个答案:

答案 0 :(得分:0)

  

问题是:如何在没有像

这样的手工劳动的情况下在该位置设置断点

GDB(默认情况下)禁用地址随机化。

如果你从一开始就在GDB下运行程序(即不是attach已经运行的进程),那么你应该只需要执行一次“手工劳动”,并在所有后续运行中重复使用相同的地址。

<强>更新

  

我无法从一开始就在GDB下运行应用程序。我无法手动启动它。

在这种情况下,只需在系统范围内禁用ASLR(在调试时):

echo 0 | sudo tee /proc/sys/kernel/randomize_va_space