2017-02-21 115 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我已經更新了答案。 –