错误日志:解决在VScode中调试C++代码断点无效、断点错位的问题

文章探讨了调试时断点失效的问题,通常由CMakeLists.txt中的Release模式和过度优化(如-O3)引起。设置CMAKE_CXX_FLAGS_DEBUG不能解决优化导致的调试困难。另一种方法是在CMakeLists中区分Debug和Release模式的编译标志。
摘要由CSDN通过智能技术生成

问题可能原因有:

  1. 调试时断点无效,大概率是 CMakeLists.txt 设置成了 Release 模式;
  2. 如果在 CMakeLists.txt 在设置成 Debug 以后,调试时能够停下来,但没在断点处停下,而是停在了别的地方,这就是代码编译优化导致的了。应该是 CMakeLists.txt 中添加了 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O3"),测试发现 O1O2O3 都会出现同样的问题。也就是说,任何级别的优化都会带来代码结构的改变,会使目标代码的执行顺序变得面目全非,导致调试信息严重不足。
    • 有的文章中说添加设置 SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g") 能解决问题,但是亲测若添加了代码编译优化,是没办法解决这问题的。

问题二对应的场景为以下:

程序运行前:
在这里插入图片描述

程序运行后:
在这里插入图片描述
可以在 CMakeLists 中将 Debug 和 Release 使用 CMAKE_CXX_FLAGS_DEBUGCMAKE_CXX_FLAGS_RELEASE 区分开来。

  • 10
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
在VS Code调试C代码可以使用其内嵌的GDB图形化界面调试功能,这对于C/C++开发者来说非常方便。你可以按照以下步骤进行配置: 1. 确保你已经安装了GDB调试器。你可以在终端运行`gdb --version`来检查是否已安装。 2. 在VS Code安装C/C++插件,该插件提供了调试所需的功能。 3. 配置`.vscode/launch.json`文件,该文件用于配置调试器。你可以通过按下`Ctrl + Shift + P`打开命令面板,然后输入`C/Cpp: Generate Debug Configuration`来自动生成该文件。 4. 在生成的`launch.json`文件,确保以下配置项正确设置: - `"name"`: 调试配置的名称。 - `"type"`: 调试器的类型,对于C/C++代码,设置为`"cppdbg"`。 - `"request"`: 设置为`"launch"`以启动调试器。 - `"program"`: 设置为要调试的可执行文件的路径。 - `"cwd"`: 设置为工作目录的路径。 - `"MIMode"`: 设置为`"gdb"`以使用GDB作为调试器。 - `"miDebuggerPath"`: 设置为GDB可执行文件的路径。 5. 在代码设置断点,你可以使用鼠标左键单击行号来设置断点,或者在代码行上右键单击并选择“添加断点”。 6. 按下F5或选择菜单栏的“调试”>“开始调试”来启动调试会话。 7. 在调试过程,你可以使用调试面板的各种功能,例如单步执行、查看变量的值和堆栈跟踪等。 通过以上步骤,你可以在VS Code成功调试C代码。如果你需要更详细的指导,可以参考引用提到的文章《Linux下使用VS Code CMake调试C程序》。希望对你有帮助!<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [解决VScode调试C++代码断点无效断点错位问题](https://blog.csdn.net/hypc9709/article/details/125906413)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] - *2* [VSCode调试C/C++项目](https://blog.csdn.net/qq_45488242/article/details/128414756)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

泠山

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值