2017-04-11 26 views
0

我正在嘗試使用gdb作爲最終可執行文件source_file.c,'list'命令。是source_file.c必須出現在目錄中,我們試圖爲source_file.c的可執行做GDB?

它沒有按照我的預期工作,因爲我只有一個可執行文件而不是該目錄中的source_file.c。這是預期的行爲?

方案如下:

(gdb) b main 
(gdb) list 
1 source_file.c: No such file or directory. 
in source_file.c 

那麼,是不是需要有在PWD source_file.c,對於試圖啓動gdb爲source_file.c可執行文件?

回答

3

爲調試編譯的二進制文件添加了附加信息以幫助調試器。這包括每個指令和符號的文件名和行號。但它不包括源代碼。

如果你想要源代碼級別的調試,你必須有源文件,但它不必在同一個目錄中。您可以使用「目錄some_dir_name」命令指定包含源文件的目錄。

沒有源文件中的調試器仍然是一個有用的工具。你幾乎可以做任何事情。您可以設置斷點,反彙編代碼,檢查內存等,但不會顯示代碼或變量名稱。一個不起作用的命令是「列表」。該組件相當於「拆卸」。

有幾個有效的原因可以在沒有源文件的情況下進行調試。我花了一些時間在表面上只有彙編調試器的操作系統上工作。但我有權訪問源代碼來指導我的方式。但在當今世界,它通常更容易避免。

GDB還支持遠程調試。這將允許你在有代碼的機器上運行gdb。

正如前面所提到的documenentation有一個很好的說明:https://www.sourceware.org/gdb/current/onlinedocs/gdb/Source-Path.html

+0

你的意思是說,這是必須要有無論是在當前目錄或其他目錄source_file.c,我的問題是,我該怎麼辦,只有GDB啓用gdb的沒有source_file.c的圖像?這會是什麼行爲? @Richard – prashad

+0

我更新了我的答案。但總之,除了源代碼和變量名之外,你可以做所有事情,不需要源文件。 – Richard

相關問題