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

时间:2009-11-12 15:56:39

标签: debugging gdb codeblocks boost-build

我一直在WinXP盒子上使用Code :: Blocks with MinGW一段时间了。但是因为我开始使用Boost.Build作为“自定义构建工具”,我在设置Code :: Blocks的断点时遇到了麻烦。当我开始调试会话时Code :: Blocks尝试将所有断点发送到GDB,但GDB似乎无法识别源的文件名:

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前端。任何帮助解决这个问题的人都表示赞赏。

2 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分:0)

试试这个:

(gdb) break main.cpp:185

如果GDB也不知道main.cpp,则Boost.Build未构建调试版本。
<{1}}在编译源时可能没有使用绝对路径名。

相关问题