2012-06-03 21 views
3

首先,我不能使用調試器[1]。但是我可以訪問程序的程序計數器,也可以編譯我需要的所有標誌的二進制文件(用C編寫)。我甚至可以更改代碼(儘管我不喜歡)。鑑於PC,我希望能夠知道它對應的是哪一行。只從程序計數器獲取代碼行信息?

我確定必須有一種自動,實用,快速的方法來做到這一點。但我沒有成功。

編輯:忘了提及:Linux系統,二進制文件是PPC,主機是i386。我有權訪問PPC硬件。

[1]應用程序正在仿真,並且它是交叉編譯的,我在主機模擬器中有一個gdb。但是我無法連接仿真來賓應用程序上的gdbserver。真正的硬件不是一種選擇,我試圖建立一個基於仿真器的模擬器。

+1

如果使用調試信息編譯二進制文件,那麼可以通過摸索包含調試信息的ELF部分,使用PC在源代碼中找到正確的位置。雖然自動化,快速和實用並不是這個過程中需要考慮的術語,但! –

+0

@JonathanLeffler爲什麼不做出答案? – Matt

回答

2

如果使用調試信息編譯二進制文件,那麼可以通過摸索包含調試信息的ELF部分,使用PC在源代碼中找到正確的位置。雖然自動化,快速和實用並不是這個過程中需要考慮的術語,但!

+0

我認爲objdump或readelf獲取符號和獲取一些初始信息都可以 - 如您所說,我可以找到正確的位置。現在我正在研究BinTools(python庫),使事情變得自動化和實用化,更加個性化。 – MariusSiuram