使用代码块和自定义调试(Boost.Build)

问题描述:

我一直在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前端。任何帮助解决这个问题表示赞赏。

我启用了Code :: Block的调试日志来查看传递给GDB的命令,看起来问题出在Code :: Blocks上。它发送一个

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

命令给GDB,这是“DOS-mangled”目录名。 GDB不喜欢那样。所以,它看起来像Code :: Blocks中的一个bug。

试试这个:

(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