增加如下蓝色背景处显示的配置脚本:
重要字段说明:
- label:编译任务名,需要与Launch.json中preLaunchTask字段属性一致,配置完成后,按快捷键“CTRL SHIFT B”,会弹出该处配置的名称,如“test_build”;
- command:为shell语句,其实就是进入指定的路径下执行make指令,前提是该目录下有makefile文件用于编译源文件;
- guoup:组名,如果没有这句,按快捷键“CTRL SHIFT B”后,没有test_build编译任务选择。
现在万事俱备了,让我们一起见证奇迹吧,先按快捷键"CTRL SHIFT B",会弹出如下编译任务:
点击“test_build”或按回车键,开始编译:
编译完成后,在程序中需要设置断点的位置按“F9”快捷键增加断点,按“F5”快捷键调试运行,奇怪,终端中提示程序都运行完了,为什么程序没在断点处停下来呢,如下图所示?
这个问题困扰了我好久,心想,难道就只能用VSCode编写代码吗,也太大材小用了,就在我快要放弃的时候,突然灵光一闪,想到在windows下必须将编译选项也要设置为Debug才能进断点,而如果是Release则不能进断点,对应到linux环境下,我怀疑makefile编译出来是的不带GDB信息的可执行文件,按照这个思路,我在网上搜了一搜,哈哈,不到半分钟,就让我搜到了,需要在CMakeLists.txt加入下面三句话(因为我的makefile是通过cmake指令产生的,关于cmake相关知识,大家请自行百度)就可以了:
SET(CMAKE_BUILD_TYPE "Debug") SET(CMAKE_CXX_FLAGS_DEBUG "$ENV{CXXFLAGS} -O0 -Wall -g2 -ggdb") SET(CMAKE_CXX_FLAGS_RELEASE "$ENV{CXXFLAGS} -O3 -Wall")
重新生成makefile文件。
按“F5”快捷键调试运行,期待已久的画面终于出现了: