当前位置:   article > 正文

vscode调试C程序和Python脚本_vscode c语言调用python

vscode c语言调用python

1、前言:

以前一直使用notepad++写一些简单的脚本,后来发现vscode这个编辑器挺好用,并且带有丰富的插件。这篇博客主要记录一下如何使用vscode对C程序和Python脚本进行调试,测试代码CSDN下载链接:测试代码。在博客最后介绍一下vscode比较好用的几个插件。

2、vscode调试C程序和Python脚本

2.1、vscode调试C程序

1) 由于我们用的平台是windows,首先我们需要安装MinGW(著名C/C++编译器GCC的Windows版本),安装教程可参考MinGW-w64安装教程

2) 配置好MinGW之后,创建c_test.c,将下列代码复制到c_test.c

#include <stdio.h>
 
int main()
{
    int a = 10;
    int b = 1002;
    printf("%d", a);
    printf("%d", b);
    for(int i = 0; i< 100; i++)
    {
        a = a + i;
        b = b + i;
        printf("%d", a);
        printf("%d", b);
    }
    /* 我的第一个 C 程序 */
    printf("Hello, World! \n");
 
    return 0;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20

然后如下图所示,按照顺序依次选择

① 点击 运行=>启动调试
在这里插入图片描述
② 选择 C++(GDB/LLDB)
在这里插入图片描述
③ 选择 gcc.exe 生成和调试活动文件
在这里插入图片描述
然后在c_test.c程序的根目录下会生成.vscode文件夹,生成的.vscode文件夹下包含launch.jsontasks.json文件。
配置launch.jsontasks.json文件我们有两种方法:
在配置前我们需要先确定MinGW的路径,建议直接放在C盘根目录下。然后确定C:\MinGW\bin是否添加到环境变量Path中。
在这里插入图片描述

第一种:
我们直接对launch.json进行如下修改(配置miDebuggerPath的路径):
launch.json文件

{
    // 使用 IntelliSense 了解相关属性。 
    // 悬停以查看现有属性的描述。
    // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "name": "gcc.exe - 生成和调试活动文件",
            "type": "cppdbg",
            "request": "launch",
            "program": "${workspaceFolder}\\${fileBasenameNoExtension}.exe",
            "args": [],
            "stopAtEntry": false,
            "cwd": "${workspaceFolder}",
            "environment": [],
            "externalConsole": false,
            "MIMode": "gdb",
            "miDebuggerPath": "C:\\MinGW\\bin\\gdb.exe",  //修改为本地路径
            "setupCommands": [
                {
                    "description": "为 gdb 启用整齐打印",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": false
                }
            ],
            "preLaunchTask": "C/C++: gcc.exe 生成活动文件"
        }
    ]
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29

tasks.json文件

{
    "tasks": [
        {
            "type": "cppbuild",
            "label": "C/C++: gcc.exe 生成活动文件",
            "command": "C:\\MinGW\\bin\\gcc.exe",
            "args": [
                "-fdiagnostics-color=always",
                "-g",
                "${fileDirname}\\*.c",   //此处设置编译需要的源文件,有多个,要分别设置
                // "${file}",
                "-o",
                "${fileDirname}\\${fileBasenameNoExtension}.exe"
            ],
            "options": {
                "cwd": "${fileDirname}"
            },
            "problemMatcher": [
                "$gcc"
            ],
            "group": {
                "kind": "build",
                "isDefault": true
            },
            "detail": "调试器生成的任务。"
        }
    ],
    "version": "2.0.0"
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29

第二种(慎用):
需要安装c/c++ runner插件,装好插件之后会自动生成下面所示文件(仍然需要更改launch文件的programcwd参数)。
在这里插入图片描述

我们打开vscode的设置界面,直接配置gcc.exegdb.exe的文件路径
在这里插入图片描述
在这里插入图片描述
通过第二种方法配置debug,下次直接运行调试,就不用再创建launch.jsontask.json了,但是仍然需要更改launch文件的programcwd参数。

3)完成上述操作后,我们重新点击 运行=>启动调试 就可以添加断点调试了。
在这里插入图片描述


BUG记录(2021-10-29):
新版本出现BUG记录:
使用vscode-1.61.2,c/c++插件1.7.1。在vscode中配置launch.json和task.json。.vscode配置下载链接
直接下载,然后替换本地的.vscode文件,再将里面的dgb路径修改为你自己的本地路径即可。
缺点:由于c/c++版本匹配的问题,配置好之后进行debug断点调试,不会在断点处停留,而是直接生成结果,尝试了很多版本都没有解决这个问题。
所以,请谨慎下载该文件。

BUG记录(2021-10-30):
上面BUG已经解决了,问题:在VSCode中无法进行调试,因为gcc/g++都可以运行,所以怀疑是vscode和c/c++插件版本的问题,而且在vscode和cpptools官网上也有人反应是版本的问题,但是最后发现原来是MinGW安装的问题。
笔者使用的电脑系统是win10,这里提供已经编译好的MinGW,各位看官可以直接复制到本地,然后配置一下环境变量就可以正常使用了。(MinGW下载链接


2.2、vscode调试Python脚本

1) vscode调试Python脚本很简单,我们首先创建python_test.py脚本,将下列程序复制到python_test.py脚本中

import os
import sys

def num_1_100():
    for i in range(100):
        print(i)

num_1_100()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

2) 首先打开文件=>首选项=>输入settting.json=>打开settting.json文件如下(主要是头两行,为python的路径配置,其他行做为参考可不看):

{
    "python.pythonPath": "D:\\Users\\wzf\\AppData\\Local\\Programs\\Python\\Python37\\python.exe",
    "python.linting.enabled": false,//忘了是什么东西了,反正有用

    "editor.fontLigatures": null,
    "pyqt-integration.pyrcc.compile.filepath": "${qrc_name}.py",
    "pyqt-integration.pyuic.cmd": "D:\\Users\\wzf\\AppData\\Local\\Programs\\Python\\Python37\\Scripts\\pyuic5.exe",
    "pyqt-integration.qtdesigner.path": "D:\\Users\\wzf\\AppData\\Local\\Programs\\Python\\Python37\\Lib\\site-packages\\qt5_applications\\Qt\\bin\\designer.exe",
    "workbench.editorAssociations": {
        "*.ipynb": "jupyter-notebook"
    },
    "editor.fontSize": 15,
    "launch": {
        "version": "0.2.0",

        "configurations": [
        
        ],
        "compounds": []
    },
    "security.workspace.trust.untrustedFiles": "open",
    "files.autoSave": "afterDelay",
    "security.workspace.trust.enabled": false,
    "code-runner.clearPreviousOutput": true,
    "code-runner.executorMap": {

        "javascript": "node",
        "java": "cd $dir && javac $fileName && java $fileNameWithoutExt",
        "c": "cd $dir && gcc *c -o $fileNameWithoutExt && $dir$fileNameWithoutExt",
        "cpp": "cd $dir && g++ $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt",
        "objective-c": "cd $dir && gcc -framework Cocoa $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt",
        "php": "php",
        "python": "python -u",
        "perl": "perl",
        "perl6": "perl6",
        "ruby": "ruby",
        "go": "go run",
        "lua": "lua",
        "groovy": "groovy",
        "powershell": "powershell -ExecutionPolicy ByPass -File",
        "bat": "cmd /c",
        "shellscript": "bash",
        "fsharp": "fsi",
        "csharp": "scriptcs",
        "vbscript": "cscript //Nologo",
        "typescript": "ts-node",
        "coffeescript": "coffee",
        "scala": "scala",
        "swift": "swift",
        "julia": "julia",
        "crystal": "crystal",
        "ocaml": "ocaml",
        "r": "Rscript",
        "applescript": "osascript",
        "clojure": "lein exec",
        "haxe": "haxe --cwd $dirWithoutTrailingSlash --run $fileNameWithoutExt",
        "rust": "cd $dir && rustc $fileName && $dir$fileNameWithoutExt",
        "racket": "racket",
        "scheme": "csi -script",
        "ahk": "autohotkey",
        "autoit": "autoit3",
        "dart": "dart",
        "pascal": "cd $dir && fpc $fileName && $dir$fileNameWithoutExt",
        "d": "cd $dir && dmd $fileName && $dir$fileNameWithoutExt",
        "haskell": "runhaskell",
        "nim": "nim compile --verbosity:0 --hints:off --run",
        "lisp": "sbcl --script",
        "kit": "kitc --run",
        "v": "v run",
        "sass": "sass --style expanded",
        "scss": "scss --style expanded",
        "less": "cd $dir && lessc $fileName $fileNameWithoutExt.css",
        "FortranFreeForm": "cd $dir && gfortran $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt",
        "fortran-modern": "cd $dir && gfortran $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt",
        "fortran_fixed-form": "cd $dir && gfortran $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt",
        "fortran": "cd $dir && gfortran $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt"
    },
    "workbench.editor.enablePreview": false,
    "terminal.integrated.defaultProfile.linux": "",
    "terminal.integrated.automationShell.windows": null,
    "debug.terminal.clearBeforeReusing": true,
    "terminal.integrated.allowMnemonics": true,
    "code-runner.runInTerminal": true,
    "debug.onTaskErrors": "debugAnyway",
    "terminal.integrated.confirmOnExit": true,
    "python.defaultInterpreterPath": "D:\\Users\\wzf\\AppData\\Local\\Programs\\Python\\Python37\\python.exe",
    "pyqt-integration.pyuic.compile.filepath": "${ui_name}.py",
    "editor.suggestSelection": "first",
    "vsintellicode.modify.editor.suggestSelection": "automaticallyOverrodeDefaultValue",
    "workbench.iconTheme": "material-icon-theme",
    "notebook.cellToolbarLocation": {
        "default": "right",
        "jupyter-notebook": "left"
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94
  • 95

将上述python路径配置完成之后,点击 运行=>启动调试 => Python文件
就可以正常的调试Python脚本了(需要在本地安装Python)
在这里插入图片描述

3、vscode常用插件

下面主要介绍一下vscode调试C程序和Python常用的插件。

插件1:C/C++在这里插入图片描述
插件2:Code Runner (可直接运行C C++ Python Java,但无法调试)
在这里插入图片描述
插件3:LiveCode for python (直接显示Python脚本变量结果)在这里插入图片描述
在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/370917
推荐阅读
相关标签
  

闽ICP备14008679号