作者:来知晓
链接:https://www.zhihu.com/question/336266287/answer/2144611720
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
===============================================================
目录
总体特点:
tasks.json / launch.json
c_cpp_propertis.json / settings.json / compile_commands.json
主要作用:
复用参考配置文件关键点:
ctrl + shift + b
或点击终端->运行生成任务,即调用tasks.json,生成exe
调用lauch.json,运行exe
main.c
为例,配置如下:
main.c
#include <stdio.h> int main() { printf("Hi World!\n"); return 0; }
目录结构
模板如下:
{ // See https://go.microsoft.com/fwlink/?LinkId=733558 // for the documentation about the tasks.json format "version": "2.0.0", "tasks": [ { "label": "Build", // 需与lauch.json中"preLaunchTask"项命名一致 "type": "shell", "command": "D:\\xx\\mingw\\bin\\gcc.exe", "args": [ "main.c", "-g", "-o", "main.exe" // 输出exe名,要与launch中调用的program项命名一致 ], "group": { "kind": "build", "isDefault": true }, // Use the standard MS compiler pattern to detect errors, warnings and infos "problemMatcher": [ "$gcc" ] } ] }
模板如下:
{ // 使用 IntelliSense 了解相关属性。 // 悬停以查看现有属性的描述。 // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387 "version": "0.2.0", "configurations": [ { "name": "gdbdebug", "type": "cppdbg", "request": "launch", "program": "${workspaceFolder}\\main.exe", // 调用的exe名,要与tasks生成的exe名一致 "args": [], "stopAtEntry": false, "cwd": "${workspaceFolder}", "environment": [], "externalConsole": true, // 决定输出是单独外部黑窗口显示,还是在IDE里终端黑窗口显示 "MIMode": "gdb", "miDebuggerPath": "D:\\xx\\mingw\\bin\\gdb.exe", "preLaunchTask": "Build", // 此项命名需要与tasks.json中的label项命名一致,作用是每次调用launch时会先调用tasks.json,从而不用自己每次都ctrl+shift+b手动生成最新任务后,才能调用launch "setupCommands": [ { "description": "为 gdb 启用整齐打印", "text": "-enable-pretty-printing", "ignoreFailures": true } ] } ] }
重要参数说明:
program
选项为要调试程序的路径,此处为main.exeargs
为运行时添加的参数stopAtEntry
选项默认为false,若设置为true,则会在函数入口中暂停externalConsole
为是否在外部控制外运行,设置为true会弹出windows的运行窗口miDebuggerPath
为gbd调试器的路径setupCommands
为启动调试前为GDB调试器设置相应的命令preLaunchTask
选项为运行调试前执行的任务c c_cpp_propertis.json / settings.json / compile_commands.json
可通过插件自动生成,并做相应的配置调节,不再赘述。编译提示找不到gcc任务
多个main函数入口,导致编译中止。提示:multiple definition of 'main'