vscode生成和调试活动文件(vscode调试器插件编写)

vscode怎么调试c语言 调试步骤

1、打开你要写c++程序的文件夹,我们这里新建一个Test文件夹并打开test,打开后:使用VScode运行调试C/C++,在左侧打开的目录中新建一个 main.cpp 文件。

2、新建后点左侧的调试按钮(英文:Debug),可以看到,目前没有调试配置。

3、这时我们需要配置自己的调试配置,回到资源管理器界面,我们可以看到目录下多了一个.vscode的文件夹,里面有一个launch.json文件。我们现在在这个文件夹中新建一个tasks.json文件。我们需要改写这两个json文件的内容。

{

version: 0.2.0,

configurations: [

{

name: Run C/C++,

type: cppdbg,

request: launch,

program: ${workspaceFolder}/${fileBasenameNoExtension}.exe,

args: [],

stopAtEntry: false,

cwd: ${workspaceFolder},

environment: [],

externalConsole: true,

MIMode: gdb,

miDebuggerPath: C:/Program Files (x86)/mingw-w64/i686-8.1.0-posix-dwarf-rt_v6-rev0/mingw32/bin/gdb.exe,

setupCommands: [

{

description: Enable pretty-printing for gdb,

text: -enable-pretty-printing,

ignoreFailures: false

}

],

preLaunchTask: build run file

},

{

name: Debug C/C++,

type: cppdbg,

request: launch,

program: ${workspaceFolder}/${fileBasenameNoExtension}.exe,

args: [],

stopAtEntry: false,

cwd: ${workspaceFolder},

environment: [],

externalConsole: true,

MIMode: gdb,

miDebuggerPath: C:/Program Files (x86)/mingw-w64/i686-8.1.0-posix-dwarf-rt_v6-rev0/mingw32/bin/gdb.exe,

setupCommands: [

{

description: Enable pretty-printing for gdb,

text: -enable-pretty-printing,

ignoreFailures: false

}

],

preLaunchTask: build debug file

}

]

}

其中tasks.json文件内容(直接复制即可):

{

version: 2.0.0,

tasks: [

{

label: build debug file,

type: shell,

command: g++,

args: [

-g,

-o,

${fileBasenameNoExtension},

${file}

],

group: {

kind: build,

isDefault: true

}

},

{

label: build run file,

type: shell,

command: g++,

args: [

-o,

${fileBasenameNoExtension},

${file}

],

group: {

kind: build,

isDefault: true

}

}

]

}

4、我们已经完成了基本的配置工作,保存以上两个json文件后,再次点击左侧的调试按钮(Debug),可以发现出现了两个新的配置,一个是直接运行程序的Run,一个是用来调试程序的Debug。

5、我们写一个简单的c++程序来进行调试说明,程序源代码,我们在return 0这行添加了一个断点。

6、切换运行配置为Debug C/C++,点击运行按钮开始调试。

7、可以看到,弹出的终端输出了正确的结果,调试窗口中的变量中也有变量a和对应的值。

VScode,c++调试时显示“找不到任务g++.exe build active file”,不能debug怎么解决呀?

如果你在寻找VSCode中快速配置C/C++基本开发环境的方法,那么本文正好适合你。

一年前的教程可能在教你如何编辑launch.json和tasks.json。尽管学会编辑这些配置文件是VSCode用户的必经过程,但是同样会给初学者带来心理压力。如果首先展示给用户的是最小可用配置,我相信用户会慢慢接受并喜欢上 VSCode。

很显然VSCode的用户体验一直在不断完善。最初大家会从网上寻找配置文件,但其实官方插件很早就支持智能识别环境并生成配置,可以快速地完成C/C++基本开发环境的配置。官方文档有非常详细的说明,但是会稍微落后于插件版本,而且我认为某些地方并不适合国内的条件。本文基于官方文档,但是精简了步骤。相信你们看完之后会发现上手VSCode其实很简单。

目前版本的插件已经解决了必须首先创建.vscode文件夹的bug,现在可以跳过下面的第1步直接按F5了

VSCode可以一键生成基础配置文件:

新建一个.vscode文件夹。如果不先创建此文件夹,将无法完美生成配置文件,这可能是插件的一个逻辑错误。我相信很多人都知道配置引导这件事,但是很多时候自动生成的配置文件无法正常工作,原因就在这里。

打开你创建的 C 文件,F5运行。不出意外的话会弹出配置引导面板,在弹出面板中依次选择以下选项:

C++ (GDB/LLDB)

gcc.exe - 生成和调试活动文件

稍等片刻,会自动在.vscode文件夹下生成launch.json和tasks.json。这样生成的两个配置文件是相互匹配好的,可以直接用于基本的运行和调试。

如果是 C++文件,选择g++.exe编译器即可。

一键生成配置文件

至此, C/C++ 基础开发环境的配置已经完成。

进阶知识

为什么修改tasks.json 似乎没有效果?

(2020年11月24日更新)有些人试图修改tasks.json中的配置(例如修改-o参数后面的生成路径), 但实际上会发现没有任何效果, 这里解释一下原因. 我曾经看过一部分C/CPP插件的源代码, 我的理解就是这个插件在运行的时候会首先加载一些预定义的针对不同编译器和源文件类型的默认task("C/C++: gcc.exe build active file"就是其中之一, 所以tasks.json中的任务本身就是插件中预定义然后帮你导出的). 最终结果就是, 对于插件而言,要运行的任务名正好自己已经从内部加载, 就会优先执行自己内部定义并加载的默认task而忽略掉tasks.json中的task(即存在一个外部的同名task),即使用户修改了其中的某些配置). 实际上用户可以删除tasks.json并保留launch.json, 这不会有任何问题. 那么如果想要修改并使用tasks.json中task怎么办?我想你们已经猜到了, 只要将"preLaunchTask"后面的任务名称修改掉,并且和tasks.json中的label项的值保持一致,插件就会乖乖使用用户自定义的task了

VSCode + make + makefile + c++ 断点调试

一、VSCode 自带

新建文件夹 Test - VSCode 打开 Test - 新建文件 main.cpp - 

DEBUG “执行按钮”右边“add configuration...”  选择 “g++ build and debug” - 

VSCode 自动生成 tasks.json 和 laugh.json 即可断点调试

二、makefile 文件

1. VSCode 新建文件 makefile 内容如下:

.default: all

all: main

main: main.o

    g++ -Wall -Werror -std=c++14 -g -O -o $@ $^

%.o: %.cpp

    g++ -Wall -Werror -std=c++14 -g -O -c $^

clean:

    rm -rf qwirkle *.o *.dSYM

此时,打开命令行,make,可以生成可执行文件

2. task.json 改成如下:

{

    "tasks": [

        {

            "type": "shell",

            "label": "shell",

            "command": "/usr/bin/make",

        }

    ],

    "version": "2.0.0"

}

3. launch.json 改成如下:

{

    // Use IntelliSense to learn about possible attributes.

    // Hover to view descriptions of existing attributes.

    // For more information, visit:

    "version": "0.2.0",

    "configurations": [

        {

            "name": "g++ build and debug active file",  // 配置名称,将会在启动配置的下拉菜单中显示

            "type": "cppdbg",

            "request": "launch",  // 请求配置类型,可以为launch(启动)或attach(附加)

            "program": "${fileDirname}/main",  //将要进行调试的程序的路径,与 makefile 中的 main 一致

            "args": [],

            "stopAtEntry": true,  // 设为true时程序将暂停在程序入口处

            "cwd": "${workspaceFolder}",

            "environment": [],

            "externalConsole": true, // 调试时是否显示控制台窗口,必须为true显示控制台,才能输入,交互

            "MIMode": "lldb",  // 指定连接的调试器,可以为gdb或lldb。

            "preLaunchTask": "shell"   //调试会话开始前执行的任务,一般为编译程序。与 tasks.json 的 label 一致

        }

    ]

}

点击 VSCode 执行按钮即可断点调试,找到弹出的窗口,即可输入,交互

注意断点打到  std::cout"start"std::endl;  不停留

361知讯网

本文链接:http://pdidw.com/vs/30366.html

发表评论

评论列表

还没有评论,快来说点什么吧~