2013-12-22 119 views
0

使用-g命令編譯的任何程序是否有可用於gbd列出的源代碼,即使源代碼文件不可用?另外,當您在具有複雜多源文件結構的程序中設置斷點時,是否需要源代碼文件的名稱?GDB:看到源代碼行?

回答

5

OP的1 ST問:

是否使用-g命令編譯有它的源代碼可供GBD列出即使源代碼文件不可用任何程序?

否。如果沒有路徑來源,那麼您將看不到源。

OP的2 第二問:

[...]當你在程序中使用複雜的多源文件結構的行設置的斷點你需要的源代碼文件的名稱??

並不總是如此。有幾種設置斷點的方法。我記得只有兩個人打破了一條線或打破了一個功能。如果你想在一個函數的第一行中斷,使用

break functionname 

如果功能生活模塊

break __modulename_MOD_functionname 

中的模塊名和functionname應該是小寫的,不管你是如何申報他們在代碼中。注意模塊名稱前的兩個下劃線。如果您不確定,請在可執行文件中使用nm來查明符號是什麼。

如果您有可用的源代碼並且正在使用圖形環境,請嘗試ddd。它阻止我發誓,並從gdb中汲取大量猜測。如果源可用,它將立即顯示出來。

+0

也可以嘗試通過簡單地指定源文件和行號來添加斷點,如'break myfile.c:42'。 – alk

+0

你能指向一個源代碼的副本嗎? –

+0

是的。目錄目錄WhereSourceLives – cup