5

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

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:\Users\liuca_000\Documents\Lattice_Boltzmann_code\lattice_boltzmann\
Adding source dir: C:\Users\liuca_000\Documents\Lattice_Boltzmann_code\lattice_boltzmann\
Adding file: C:\Users\liuca_000\Documents\Lattice_Boltzmann_code\lattice_boltzmann\bin\Release\lattice_boltzmann.exe
Changing directory to: C:/Users/liuca_000/Documents/Lattice_Boltzmann_code/lattice_boltzmann/.
Set variable: PATH=.;C:\Program Files (x86)\CodeBlocks\MinGW\bin;C:\Program Files (x86)\CodeBlocks\MinGW;C:\Python27\Lib\site-packages\PyQt4;C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common;C:\Windows\System32;C:\Windows;C:\Windows\System32\wbem;C:\Windows\System32\WindowsPowerShell\v1.0;C:\Python27;C:\Python27\DLLs;C:\Python27\Scripts;C:\Python27\Lib\site-packages\vtk;C:\Python27\gnuplot\binary;C:\Python27\Lib\site-packages\osgeo;C:\Program Files (x86)\pythonxy\SciTE-3.3.2-3;C:\Program Files (x86)\pythonxy\console;C:\MinGW32-xy\bin;C:\Program Files (x86)\pythonxy\swig;C:\Program Files (x86)\pythonxy\gettext\bin;C:\Program Files\MATLAB\R2012b\runtime\win64;C:\Program Files\MATLAB\R2012b\bin;C:\Program Files\TortoiseSVN\bin;C:\Program Files\MiKTeX 2.9\miktex\bin\x64;C:\Program Files (x86)\Windows Live\Shared;C:\Users\liuca_000\AppData\Roaming\MiKTeX\2.9\miktex\bin\x64;.;\
Starting debugger: C:\Program Files (x86)\CodeBlocks\MINGW\bin\gdb.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:\Users\liuca_000\Documents\Lattice_Boltzmann_code\lattice_boltzmann\bin\Release\lattice_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
4

4 回答 4

4

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

于 2014-01-31T02:42:59.410 回答
3

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

(未找到调试符号)

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

于 2013-11-02T22:43:49.327 回答
1

今天花了很长时间来解决这个问题:

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

直到,我想我一直在犯一个非常新手的错误,不熟悉 IDE 和调试,所以它停在你必须用红色箭头而不是绿色箭头运行的断点处。所以像我这样愚蠢的人希望这会有所帮助!xD

于 2014-08-10T11:08:35.450 回答
0

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

您无法设置断点,因为您的构建不包含调试信息(如您现在所知);并且构建不包含调试信息,因为您尝试调试的是 Release 构建而不是 Debug 构建。

您可以在构建日志中看到这一点:

添加文件:C:\Users\liuca_000\Documents\Lattice_Boltzmann_code\lattice_boltzmann\bin\Release\lattice_boltzmann.exe

并且:

从 C:\Users\liuca_000\Documents\Lattice_Boltzmann_code\lattice_boltzmann\bin\Release\lattice_boltzmann.exe 读取符号...(未找到调试符号)...完成。

发布版本生成的可执行文件将<project_dir>\bin\Release(原样),而调试版本生成的可执行文件将在<project_dir>\bin\Debug

通过转到Build Options -> Compiler flags并勾选Produce debugging symbols复选框,您似乎已经“解决”了这个问题。

但是,如果您回到那里并查看窗口左侧的树控件,我希望您会看到:

  • lattice_boltzmann
    • 调试
    • 发布

选择了发布。这意味着您现在已将发布版本配置为包含调试信息。您不希望这样,因为:-

  • 尽管您现在将在可执行文件中获得调试符号并且调试器将能够使用它们,但 Release 构建仍默认配置为高度优化(应该如此),您很可能会发现调试器的行为有时奇怪地令人费解,因为优化的目标代码并不总是与源代码正确匹配。

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

您应该做的只是确保您尝试调试的构建 调试构建。要做到这一点:

  • 从顶部菜单栏Build -> Select Target导航
  • 取消选中发布。检查调试

然后重建项目(即清理和构建),您将能够正确调试它。Code::Blocks Debug 构建的默认选项非常好。

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

于 2014-01-31T14:57:28.390 回答