问题 代码块不会在断点处停止


我正在尝试在Codeblocks中调试C ++项目,但它并没有在断点处停止。我读了其他答案,到目前为止尝试了以下内容:

  1. Build Options > Compiler SettingsProduce debugging symbols 检查, strip all symbols 未经检查。
  2. 我的文件路径中没有空格/非ascii值。
  3. 运行调试版本。
  4. 调试器在(Settings > Compiler > Toolchain Executables) 设置 GDB/CDB Debugger:Default
  5. 可执行路径(Settings > Debugger > GDB/CDB Debugger:Default)是 C:\MinGW\bin\gdb.exe

它仍然没有在断点处停止,调试器日志提到没有找到调试符号 我在这里想念的是什么?


8308
2017-10-21 08:17


起源

您还应该使用优化-O0(或者-O1)。验证函数是否被调用或调用函数的函数是否在某处调用。链接器可能会清除所有未使用的代码。 - j123b567
@ j123b567:感谢您的建议。我试过了,但得到了这个 - “编译器警告:您启用了调试符号。这在优化时不是一件好事。”此外,Codeblocks仍然忽略断点。 - Stormbringer
您可以通过从执行开始时单击“步入”来进入您的功能吗?你能提供你想破解的代码片段和高位线吗? - j123b567
不会。但是,将全局设置与项目设置相同并重建项目会为我解决此问题。 - Stormbringer


答案:


在尝试修复此问题时,我遇到了很多类似的问题,其中CodeBlocks在调试过程中忽略了断点,所以这是我到目前为止遇到的修复。

1.清洁和重建。
2.确保选中(构建选项>编译器设置)生成调试符号,取消选中剥离所有符号。请确保在全局设置和项目设置中完成此操作。这为我解决了这个问题。
3.检查以便项目文件路径中没有空格/非ASCII值。
4.检查您是否正在运行调试版本,而不是release。Release版本中的可执行文件将是\ bin \ Release,Debug版本中的可执行文件将位于\ bin \ Debug中。
5.检查(Settings> Compiler> Toolchain Executables)中的Debugger是否设置为GDB / CDB Debugger:Default。
6.检查(Settings> Debugger> GDB / CDB Debugger:Default)中的可执行路径是否为有效的gdb路径(C:\ MinGW \ bin \ gdb.exe)。
7.更新代码块(最后的手段)。
请添加其他适合您的评论。


14
2017-10-21 11:25



我的问题是调试器实际上在断点处停止但C :: B仍然认为程序正在运行,所以它不会停止。你有什么解决方案吗? - Calmarius


我也有这个问题,但是,这是因为很久以前我已经设定了

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

“设置后叉模式孩子”

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


2
2017-11-07 10:19





唯一对我有用的东西:

带空格的路径

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

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

您还可以检查菜单:Build-> Select target-> Debug


0
2017-07-26 14:46





对我来说,有效的方法是删除文件 main.o,包含在 obj/Debug

希望它可以帮到某人。


0
2017-10-27 11:09