2009-11-12 51 views
1

我一直在WinXP盒子上用MinGW使用Code :: Blocks一段時間。但自從我開始使用Boost.Build作爲「自定義構建工具」時,我無法從Code :: Blocks中設置斷點。當我開始調試會話代碼:: Blocks的嘗試所有的破發點發送到GDB GDB,但似乎並沒有認識到源文件名:使用代碼塊和自定義調試(Boost.Build)

Debugger name and version: GNU gdb 6.6 
No source file named C:/xxx/CB-Workspace/altomo/src/main.cpp. 
Breakpoint 1 ("C:/xxx/CB-Workspace/altomo/src/main.cpp:185) pending. 

(該xxx是唯一的縮寫符號)

爲了看看發生了什麼,我手動啓動了GDB並試圖設置一個斷點:

(gdb) break main.cpp:181 
Breakpoint 1 at 0x40231e: file src/main.cpp, line 181. 
(gdb) break src/main.cpp:182 
Breakpoint 2 at 0x402331: file src/main.cpp, line 182. 
(gdb) break "C:/xxx/CB-Workspace/altomo/src/main.cpp:185" 
Breakpoint 3 at 0x402513: file src/main.cpp, line 185. 

一切似乎都沒問題。我也很滿意在所有的* .o文件中存在完整的路徑。

奇怪的是調試用於在我切換到Boost.Build之前工作。所以,我不知道在哪裏看。誰應該責怪?我,Boost.Build,Code :: Blocks或GDB?我錯過了一些明顯的編譯器選項或CB項目設置w.r.t.搜索路徑或什麼?

我想繼續使用Boost.Build作爲構建工具和Code :: Blocks進行編輯,並作爲GDB前端。任何幫助解決這個問題表示讚賞。

回答

1

我啓用了Code :: Block的調試日誌來查看傳遞給GDB的命令,看起來問題出在Code :: Blocks上。它發送一個

directory C:/XXX~1/CB-WOR~1/altomo 

命令給GDB,這是「DOS-mangled」目錄名。 GDB不喜歡那樣。所以,它看起來像Code :: Blocks中的一個bug。

0

試試這個:

(gdb) break main.cpp:185 

如果GDB不知道main.cpp要麼,然後Boost.Build沒有建立一個調試版本。
機會是Boost.Build編譯源時不使用絕對路徑名。

+0

手動'break main.cpp:185'的工作方式和'break main.cpp:181'的工作方式一樣,這正是我已經嘗試過的(見上文)。 – sellibitze 2009-11-13 07:41:37