VSCode C编译调试 配置

20/2/27 

和往常一样照着@谭九鼎 老哥的方法配置vscode的C环境的时候,第一步就出了问题。

原因是他教程里指定下载的那个文件是x64的,而我系统是x86。

知道问题了也就有办法解决了,然后就发现认不出哪个是x86的(绝

然后又想了些有意思的东西,花了点时间弄出来了,就写个笔记。

20/3/10

更新:解决了编译时会跳到终端的问题(纯属眼瞎),编译出错时无法定位的问题(之前没给当回事)。

都改在tasks.json,所以修改的就都写在原来下面了。

正文

1.先是下MinGW,链接

x64的下 x86_64-posix-seh

x86的下 i686-posix-dwarf

MinGW相关请参阅(有图的/图炸了的

2.设置环境变量

例如:E:\mingw32\bin 

设置好了后要重启,重启后cmd键入 gcc -v 验证MinGW版本

扫描二维码关注公众号,回复: 11261571 查看本文章

3.VSCode装插件

  • C/C++:又名 cpptools,提供Debug和Format功能
  • Bracket Pair Colorizer 2:彩虹花括号

4.配置launch.json

写个hello.c然后按f5调试,选有GDB的那个,生成个launch.json,如下。

 1 {
 2     // 使用 IntelliSense 了解相关属性。 
 3     // 悬停以查看现有属性的描述。
 4     // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
 5     "version": "0.2.0",
 6     "configurations": [
 7         {
 8             "name": "gcc.exe build and debug active file",
 9             "type": "cppdbg",
10             "request": "launch",
11             "program": "C:\\Windows\\System32\\cmd.exe",    //这两行的说明在下面
12             "args": ["/c .vscode\\ConsolePauser.exe  exe\\${fileBasenameNoExtension}.exe"],
13             "stopAtEntry": false,
14             "cwd": "${workspaceFolder}",
15             "environment": [],
16             "externalConsole": false,       //改成true
17             "internalConsoleOptions":"neverOpen",   //这条加的,终端貌似还是会打开
18             "MIMode": "gdb",
19             "miDebuggerPath": "E:\\mingw32\\bin\\gdb.exe",
20             "setupCommands": [
21                 {
22                     "description": "为 gdb 启用整齐打印",
23                     "text": "-enable-pretty-printing",
24                     "ignoreFailures": true      //这个改成false
25                 }
26             ],
27             "preLaunchTask": "gcc.exe build active file"
28         }
29     ]
30 }

第11行的原本是打开编译好的程序,这里是改成打开cmd。

第12行是传递给程序的命令行参数。【/c】是让cmd执行完就关闭窗口。

ConsolePauser.exe】是从Dve-C++里偷的,为了美观放在.vscode里了,参考的链接下载地址

编译输出的可执行文件都放在exe里。

5.配置tasks.json

上面那个整好再按f5调试就会弹出

 选配置任务,再

{
    // 有关 tasks.json 格式的文档,请参见
        // https://go.microsoft.com/fwlink/?LinkId=733558
        "version": "2.0.0",
        "tasks": [
            {
                "type": "process",
                "label": "gcc.exe build active file",
                "command": "E:\\mingw32\\bin\\gcc.exe",
                "args": [
                    "-g",
                    "${file}",
                    "-o",
                    "${fileDirname}\\exe\\${fileBasenameNoExtension}.exe", //中间加个exe
                    "-static-libgcc",   //加的,好像是什么静态链接
                    "-Wall"             //加的,检查错误啥的好像
                ],
                "options": {
                    "cwd": "E:\\mingw32\\bin"
                },
                "problemMatcher": [
                    "$gcc"
                ],
                "presentation": {
                    "echo": true,
                    "focus": false,     // 设为true后可以使执行task时焦点聚集在终端,但对编译C/C++来说,设为true没有意义
                    "panel": "shared"   // 不同的文件的编译信息共享一个终端面板
                },
                "group": {
                    "kind": "build",
                    "isDefault": true // 不为true时ctrl shift B就要手动选择了
                },
                
            }
        ]
    }

到此就基本完成了

---更新---

1."agrs"里的:"-static-libgcc",   "-Wall" 两句不知道干啥用的,都给注释掉了。

2."presentation" 里加了个 "reveal": "never", 作用是编译时不会跳转到终端,谭九鼎的那篇里有写,之前可能没注意给略过了。

3.研究指针的时候发现:编译报错没法定位到代码位置,原因是问题匹配器指向的文件路径不知为何会出现重复

 百度出的解决方法是改"problemMatcher",原本的"problemMatcher"下只有个"$gcc",先给换成VSCode官网给的模板

"problemMatcher": {
        "owner": "cpp",
        "fileLocation": ["relative", "${workspaceFolder}"],
        "pattern": {
          "regexp": "^(.*):(\\d+):(\\d+):\\s+(warning|error):\\s+(.*)$",
          "file": 1,
          "line": 2,
          "column": 3,
          "severity": 4,
          "message": 5
        }
},

再把"owner": "cpp"的"cpp"给改成"c","fileLocation"的"${workspaceFolder}"给改成"\\"

再把编辑器重启问题就解决了。

 6.总结

刚开始就x86是哪个没搞懂折腾了一会,然后就老毛病复发又想整点活(笑

1.实现了吧exe都放在一个文件夹里

2.实现了不用再加语句就能在最后暂停程序,并报个不知道什么时间(

3.不过编译的时候还是会自动从问题跳到终端,不过这个用快捷键Ctrl+Shift+M跳回问题算勉强解决了吧

 

猜你喜欢

转载自www.cnblogs.com/Observer-A/p/12372657.html