为什么代码在代码块中的断点处没有中断

Why the code doesn't break at the breakpoint in code blocks

本文关键字:代码 中断 断点 为什么      更新时间:2023-10-16

我按照此视频中的说明逐行运行代码:

http://www.youtube.com/watch?v=6CGH9Z19dS8

但是,在我按 F8 后,它只是运行而不转到断点(我看不到黄色三角形)。此外,我还尝试了"附加到进程",它是一样的。

我错过了什么吗?(顺便说一句,我的项目中有多个文件,但我想这不会是问题,对吧? 因为我可以在 VS Studio 中轻松做到这一点。也许,我对代码块不是那么熟悉)

感谢您的帮助!

如果您有兴趣,这是调试器日志:

Building to ensure sources are up-to-date
Selecting target: 
Release
Adding source dir: C:Usersliuca_000DocumentsLattice_Boltzmann_codelattice_boltzmann
Adding source dir: C:Usersliuca_000DocumentsLattice_Boltzmann_codelattice_boltzmann
Adding file: C:Usersliuca_000DocumentsLattice_Boltzmann_codelattice_boltzmannbinReleaselattice_boltzmann.exe
Changing directory to: C:/Users/liuca_000/Documents/Lattice_Boltzmann_code/lattice_boltzmann/.
Set variable: PATH=.;C:Program Files (x86)CodeBlocksMinGWbin;C:Program Files (x86)CodeBlocksMinGW;C:Python27Libsite-packagesPyQt4;C:Program Files (x86)NVIDIA CorporationPhysXCommon;C:WindowsSystem32;C:Windows;C:WindowsSystem32wbem;C:WindowsSystem32WindowsPowerShellv1.0;C:Python27;C:Python27DLLs;C:Python27Scripts;C:Python27Libsite-packagesvtk;C:Python27gnuplotbinary;C:Python27Libsite-packagesosgeo;C:Program Files (x86)pythonxySciTE-3.3.2-3;C:Program Files (x86)pythonxyconsole;C:MinGW32-xybin;C:Program Files (x86)pythonxyswig;C:Program Files (x86)pythonxygettextbin;C:Program FilesMATLABR2012bruntimewin64;C:Program FilesMATLABR2012bbin;C:Program FilesTortoiseSVNbin;C:Program FilesMiKTeX 2.9miktexbinx64;C:Program Files (x86)Windows LiveShared;C:Usersliuca_000AppDataRoamingMiKTeX2.9miktexbinx64;.;
Starting debugger: C:Program Files (x86)CodeBlocksMINGWbingdb.exe -nx -fullname  -quiet  -args C:/Users/liuca_000/Documents/Lattice_Boltzmann_code/lattice_boltzmann/bin/Release/lattice_boltzmann.exe
done
Registered new type: wxString
Registered new type: STL String
Registered new type: STL Vector
Setting breakpoints
Reading symbols from C:Usersliuca_000DocumentsLattice_Boltzmann_codelattice_boltzmannbinReleaselattice_boltzmann.exe...(no debugging symbols found)...done.
Debugger name and version: GNU gdb (GDB) 7.5
Child process PID: 16672
[Inferior 1 (process 16672) exited normally]
Debugger finished with status 0
即使您

标记了-g编译器选项,问题也可能是项目文件路径中的空格。移动到路径中没有空格的地方解决了我的情况。看到: http://wiki.codeblocks.org/index.php?title=Debugging_with_Code::Blocks#Path_with_spaces

我认为您日志的这一部分说明了原因:

(未找到调试符号)

构建代码的调试版本 - 不包含优化,不包括或构建调试符号,然后重试。

今天花了相当长的时间尝试:

    "
  • 确保使用"调试"而不是"发布"
  • "目录名称中没有空格"
  • "-g 勾选,-s 未勾选"
  • "每晚下载"

没有一个工作,直到,我想我一直在犯一个非常新手的错误,不熟悉 IDE 并进行调试,以便它在中断点停止,您必须使用红色箭头而不是绿色箭头运行。所以任何像我这样愚蠢的人都希望这有帮助!xD

您似乎找到了一个错误的解决方案,并且可能产生不良后果。(如果我弄错了,请道歉)

无法设置断点,因为生成不包含调试信息(如您现在所知);并且构建不包含调试信息因为你正在尝试调试发布版本而不是调试版本。

您可以在构建日志中看到以下内容:

添加文件:C:\用户\liuca_000\文档\Lattice_Boltzmann_code\lattice_boltzmann\bin\释放\lattice_boltzmann.exe

以及:

从 C:\用户\liuca_000\文档\Lattice_Boltzmann_code\lattice_boltzmann\bin\释放\lattice_boltzmann.exe...(未找到调试符号)...做。

发布版本生成的可执行文件将按原样<project_dir>binRelease,可执行文件从调试版本将处于<project_dir>binDebug

看来您已经通过转到构建选项 ->编译器标志并勾选来"解决"问题复选框生成调试符号

但是如果你回到那里,看看窗口左侧的树控件,我希望你将看到:

  • lattice_boltzmann
    • 调试
    • 释放

,选择"发布"。这意味着您现在已经配置了发布版本以包含调试信息。你不想要这样,因为:-

  • 尽管您现在将在可执行文件中获得调试符号,并且调试器将能够使用它们,但默认情况下,发布版本仍配置了高优化(应该是这样),并且您很可能会发现调试器的行为有时令人费解,因为优化的目标代码并不总是与源代码正确匹配。

  • 您的 Release 可执行文件的大小将因调试信息而大大增加。

你应该做的只是确保你尝试调试的构建调试版本。为此:

  • 从顶部菜单栏导航 构建 -> 选择目标
  • 取消选中发布。检查调试

然后重新生成项目(即清理和构建),您将能够调试它适当地。代码::块 调试构建的默认选项非常好。

不要忘记返回并从发布配置中删除-g选项。