2017-02-21 77 views
0

我正在调试拒绝在我们的自定义Linux环境中工作的程序。我无法访问它的源代码,因此无法编译或添加任何内容。 这个问题在其共享库中的某处,我知道大概的地址范围(而没有其他)。现在的问题是:我怎么上的位置设置断点而不体力劳动像GDB:相对于共享库的地址

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

回答

0

的问题是:我怎么设置位置断点而不体力劳动像

GDB(由默认)禁用地址随机化。

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

更新:

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

在这种情况下,只是禁用ASLR系统范围内(而你正在调试):

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

感谢您的想法,但我不能从一开始运行GDB下的应用程序。我无法手动启动它。 –

+0

@ArtemMartynovich我已经更新了答案。 –