Codeblocks在断点处无法停止

15

我正在尝试在Codeblocks中调试C++项目,但它没有停在断点处。我阅读了其他答案并尝试了以下几个步骤:

  1. 构建选项>编译器设置)检查生成调试符号,取消勾选剥离所有符号
  2. 我的文件路径中没有空格/非ASCII值。
  3. 运行调试版本。
  4. 调试器在(设置>编译器>工具链可执行文件)中设置为GDB/CDB Debugger:默认
  5. 可执行文件路径在(设置>调试器>GDB/CDB Debugger:默认)中为C:\MinGW\bin\gdb.exe

它仍然没有停在断点处,调试器日志提到找不到调试符号。我漏掉了什么?


你还应该使用优化选项 -O0(或者可能是 -O1)。验证一下函数是否被调用,或者调用你的函数的函数是否被调用。链接器可能会清除所有未使用的代码。 - j123b567
@j123b567:感谢您的建议。我尝试了一下,但是出现了这个警告 - “编译器警告:您已启用调试符号。在优化时这不是一个好习惯。” 另外,Codeblocks 仍然无法识别断点。 - YetAnother
你能否通过点击执行开始处的“步入”来进入函数?你能提供代码片段和想要中断的高亮行吗? - j123b567
不过,将全局设置与项目设置相同并重新构建项目就解决了这个问题。 - YetAnother
4个回答

20
在尝试修复这个问题时,我遇到了很多类似的问题,即CodeBlocks在调试过程中忽略断点。因此,以下是我目前找到的解决方法。
1. 清理并重新构建。 2. 确保在“构建选项 > 编译器设置”中勾选了“生成调试符号”,取消勾选了“剥离所有符号”。请确保在全局设置和项目设置中都进行了这样的操作。这对我来说解决了问题。 3. 检查项目文件路径中是否有空格或非ASCII值。 4. 检查是否正在运行调试版本,而不是发布版本。发布版本的可执行文件位于<项目目录>\bin\Release,调试版本的可执行文件位于<项目目录>\bin\Debug。 5. 检查(设置 > 编译器 > 工具链可执行文件)中的调试器是否设置为GDB/CDB调试器:默认。 6. 检查(设置 > 调试器 > GDB/CDB调试器:默认)中的可执行文件路径是否有效,例如(C:\MinGW\bin\gdb.exe)。 7. 更新Codeblocks(最后的手段)。 请在评论中添加其他对您有效的方法。 8. 查看是否安装了其他MinGW版本,如果有,请确定与您的Codeblocks兼容的正确版本。您可以通过访问“设置 > 编译器 > 工具链可执行文件 > 编译器的安装目录”来更改它们。

我的问题是调试器实际上在断点处停止了,但C::B仍然认为程序正在运行,因此它不会停止。你有任何解决办法吗? - Calmarius
我的路径中有希腊字符。通过3(统计学)解决了。 - Chameleon
我的路径中有中文字符(但没有空格)。通过3解决。(用于统计) - Youwei Liang

3
我也曾遇到这个问题,但是原因是很久以前我设置了以下内容:

设置 > 调试器 > GDB / CDB 调试器 > 默认值 > 调试器初始化命令

设置为

"set follow-fork-mode child"

所以GDB实际上在调试另一个程序。

0

对我有效的唯一方法:

带空格的路径

如果您放置项目的路径/文件夹包含空格或其他特殊字符,则断点可能无法正常工作。为了安全起见,请使用英文字母、数字和“_”。

来源:使用Code::Blocks进行调试

另外,您还可以检查菜单:构建->选择目标->调试


0

对我而言有效的方法是删除包含在 obj/Debug 中的文件 main.o

希望能帮助到某些人。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接