VScode调试C/C++项目调试包含多个C++程序使用makefile编译
最近做了一个小的c项目,其中包含cpp,c,h文件,一下子不知道怎么调试,怎么单步运行。这里简单总结一下自己学习的一些傻瓜式调试方法。
首先我们假设我们的项目有三个文件main.cpp、solution.cpp、solution.h
main.cpp
#include "solution.h" int main() { Solution test; test.display(); return 0; }
solution.cpp
#include<iostream> #include "solution.h" void Solution::display() { std::cout << "HI!" << std::endl; }
solution.h
class Solution { public : void display(); };
打开我们的VScode 对应的代码文件夹
首选需要自动生成一个.vscode文件夹
点到main.cpp的编辑器,我们按ctrl+shift+D ,或者点击旁边第4个的按钮运行和调试
选择GDB就好了
g++也选第一个就好了
然后会报出错误,我们取消
点击左边第一个按钮,可以看到我们的文件列表里面生成了一个.vscode文件,里面有两个json文件
我们创建一个Makefile文件,大小写都行
main : main.o solution.o g++ -o main main.o solution.o #注意前面必须是tab,不能是空格 main.o : main.cpp solution.h g++ -g -c main.cpp solution.o : solution.h solution.cpp g++ -g -c solution.cpp clean : rm main.o solution.o main
这儿复制的话容易出错,每个g++前面都是制表符号Tab,不是空格,建议把原来的删掉,再按Tab,不然后面的make操作可能会出错
我们点击tasks.json
改一下如图所示,把原来的注释掉,或删掉,替换成下面的代码
"command": "make", "args": [ "-C", "${workspaceFolder}", "main",//这儿注意名字 ], //改一下这上面的
接着我们就可以调试main.cpp文件了,在main函数中打个断点
按F5进入调试,程序就会运行到断点位置
接下来按F11,F10就可以单步运行
另外写一个功能
假如要带参数去调试,就是比如你终端执行main函数时用./main 10000
我们也可以把参数输入进去调试
在我们的launch.json文件中
找到"args"这一项
把我们的10000以字符串的形式放进去,这样,再调试就是带参数的了