为什么代码不会在代码块中的断点处中断

时间:2013-11-02 22:39:45

标签: c++ debugging codeblocks breakpoints

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

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

然而,在我按下F8后,它只是在没有进入断点的情况下运行(我看不到黄色三角形)。另外,我也试过“附加到过程”,它也一样。

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

感谢您的帮助!

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

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 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:3)

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

  

(未找到调试符号)

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

答案 2 :(得分:1)

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

  • "确保使用" debug"而不是"发布"
  • "目录名称中没有空格"
  • " -g ticked,-s unticked"
  • "每晚下载"

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

答案 3 :(得分: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读取符号...(未找到调试符号)...完成。

Release版本生成的可执行文件将是<project_dir>\bin\Release(原样)和可执行文件 来自Debug构建版本将在<project_dir>\bin\Debug

看来你已经解决了#34;转到构建选项 - &gt;的问题编译器标记并勾选 复选框生成调试符号

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

  • lattice_boltzmann
    • 调试
    • 推出

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

  • 虽然您现在可以在可执行文件中获得调试符号,并且调试器将能够使用它们,但默认情况下仍然会为Release版本配置高优化(因为它应该是)并且您很可能会找到它调试器的行为有时令人费解,因为优化的目标代码并不总是与源代码完全匹配。

  • 调试信息会大大夸大您的版本可执行文件的大小。

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

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

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

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