2016-11-14 215 views
-1

我一直在考慮用嵌入式C代碼的二進制文件,我看不到,當我在GDB調試器GCC運行它。我想象C代碼已經被編譯/形成二進制代碼隱藏了。我曾嘗試以下:使用GDB調試查看隱藏代碼

GDB> myfile文件 GDB>列表主

我得到的輸出是:

myfile.c文件:沒有這樣的文件或目錄

我知道有在這個二進制文件中用C編寫的代碼。該可執行文件運行時,當我鍵入./myFile

我已經安裝了32位庫,因爲這需要對這種情況,我運行Ubuntu 16.04

任何幫助表示讚賞。

+0

原始源代碼不嵌入在二進制。您需要某個地方的源代碼樹的副本,並指向GDB以查看它。也就是說,如果你還沒有源代碼,就不要指望GDB能夠神奇地爲你製作它。 – kaylum

+0

謝謝。我不知道源代碼樹的副本。有沒有辦法找到這個?我不熟悉它,但現在我會研究它。 –

+0

源代碼的作者必須提供給您。這不是任何人都可以用可用信息回答你的問題。 – kaylum

回答

0

這可能是有一個編譯問題。試圖尋找option用於調試

$ gcc -g myFile.c -o myFile 
$ gdb myFile 
(gdb) list main 

如果編譯沒有"-g"選項,調試器將永遠不會告訴你個C代碼,但是隻有彙編代碼。

在你的情況,如果你運行這些命令,你會看到反彙編代碼

(gdb) info file 

再取入口點

Entry point: 0x(address) 

的地址顯示的反彙編代碼

(gdb) break 0x(address) 
(gdb) run 

當斷點被抓住

(gdb) x/20i $pc