1

我已经在 WinXP 机器上使用 Code::Blocks 和 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 项目设置 wrt 搜索路径之类的?

我想继续使用 Boost.Build 作为构建工具和 Code::Blocks 进行编辑和作为 GDB 前端。感谢您为解决此问题提供的任何帮助。

4

2 回答 2

1

我启用了 Code::Block 的调试日志以查看传递给 GDB 的命令,这似乎是 Code::Blocks 的问题。它发送一个

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

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

于 2009-11-13T16:26:34.740 回答
0

试试这个:

(gdb) break main.cpp:185

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

于 2009-11-13T06:32:30.113 回答