2013-10-03 71 views
8

我正在使用gdb調試C項目源代碼。我編譯如下:沒有名爲main.c的源文件。 gdb中斷點設置

./configure --enable-debug CFLAGS="-g -o0" 
make --debug=a 

我想調試停止在特定的文件。所以,當我用

(gdb) break main.c:672 

設置斷點它說:

No source file named main.c. 

即使當我通過特定的函數名(main.c中的文件)打破。它說:這樣的功能沒有定義。

我的當前目錄有這個main.c文件。我在Windows上使用Cygwin。當我使用設置斷點時

(gdb) break main 

它設置斷點在Cygwin文件的主要功能,而不是在我的源代碼。

  1. 我該如何解決我的第一個問題?

  2. 只是好奇,如何避免第二個問題,如果在Cygwin文件和我的源代碼中有相同的函數名?

回答

2

如果您與-g和仍然無法設置斷點編譯,嘗試在main()加入raise(SIGTRAP),運行在gdb的過程中,然後設置要再次斷點它擊中後SIGTRAP

5

當您編譯.c文件時,請確保您使用:

gcc filename.c -g 

gdb <binary name> 

搜索負荷調試符號做或不該?

如果不是:

gdb) symbol-file <path-of-symbol-file> 

您可以在OBJ目錄下找到符號文件

+0

讀取.libs/slim ...完成的符號。它顯示的消息,我認爲加載符號是好的。 – arslan

+0

您可以張貼整個問題的快照意味着你是如何編譯 –

+0

我加編譯信息,請查看 – arslan

1

只要你有使用GDB,請在命令行

gcc -g -o outputfile sourcefile.c 

以下現在鍵入

gdb -tui outputfile 

然後輸入break命令

+0

gdb -tui outputfile。我運行它,它在終端的頂部打開一個區域,它具有「無源可用」消息。之後,我嘗試設置中斷,並且同樣的「沒有名爲main.c的源文件」。信息。 – arslan

+0

請查看我的編譯命令,有什麼問題嗎? – arslan

2

我也遇到過類似的問題。我剛剛刪除了.metadata文件夾,並再次導入了特定的項目,並且工作良好。