GDB:相对于共享库的地址



我正在调试一个程序,该程序拒绝在我们的自定义Linux环境中工作。我无法访问其来源,因此无法编译或添加任何内容。这个问题在其共享库之一中的某个地方,我知道大约地址范围(也没有其他)。问题是:如何在没有手动劳动的情况下设置位置上的断点,例如

info sharedlibrary
<find address of library.so>
break <address of library.so>+<location>

问题是:如何在没有手动劳动的情况下设置位置上的断点

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

如果您从一开始就在GDB下运行该程序(即attach已经运行过程),那么您只需要一次执行"手动劳动",然后在所有后续运行中重复使用相同的地址。

>

更新:

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

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

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

最新更新