我正在调试一个拒绝在我们的自定义linux环境中工作的程序。我无法访问其源代码,因此无法编译或添加任何内容。 问题出在其中一个共享库中,我知道大概的地址范围(没有别的)。问题是:如何在没有像
这样的手工劳动的情况下在该位置设置断点info sharedlibrary
<find address of library.so>
break <address of library.so>+<location>
答案 0 :(得分:0)
问题是:如何在没有像
这样的手工劳动的情况下在该位置设置断点
GDB(默认情况下)禁用地址随机化。
如果你从一开始就在GDB下运行程序(即不是attach
已经运行的进程),那么你应该只需要执行一次“手工劳动”,并在所有后续运行中重复使用相同的地址。
<强>更新强>
我无法从一开始就在GDB下运行应用程序。我无法手动启动它。
在这种情况下,只需在系统范围内禁用ASLR(在调试时):
echo 0 | sudo tee /proc/sys/kernel/randomize_va_space