[翻译]官网文档,ubuntu使用vscode调试c++
<p>Visual Studio Code官网文档 https://code.visualstudio.com/docs/cpp/config-wsl<br>官网文档还有编译Python、Java的文档,包括win、linux、macos,写得很通俗,建议去看,flag:过四级的看不懂我倒立吃屏幕。<br>
徒手翻译原文,翻译人是直译翻译者的死对头,多处使用意译翻译。<br>
文档的很多内容可能用不到,结尾有总结,不想看翻译的请滚到最后看配置项及说明。</p>
<h1 id="官网文档翻译">官网文档翻译</h1>
<h3 id="在wsl上用vs-code写c">在WSL上用VS code写C++</h3>
<p>在这个教程中,你会在Windows Subsystem for Linux(WSL)的Ubuntu系统上配置VS code,来使用GCC编译工具和GDB调试工具。GCC代表GNU编译器集合;GDB是GNU的调试器。WSL是Windows系统上的Linux子系统,它直接在真机上运行,而不是虚拟机。</p>
<blockquote>
<p>注:教程的大部分内容可以直接在Linux设备上使用VS code做C++相关的工作。</p>
</blockquote>
<p>VS code支持在WSL内直接用Remote-WSL扩展进行工作。我们推荐使用WSL开发模式,所有源码文件还有编译器都由Linux发行版管理。更多信息详见VS Code Remote Development。</p>
<p>这个向导完成后,你将有能力创建并配置你的C++工程,并可以探索VS code的文档,获取更多关于它的特性的信息。此向导不会教你GCC、Linux或C++语言,关于这些问题的资源可以从网上获得很多。</p>
<p>如果你有任何问题,请放心地在VS Code documentation repository为此教程提问。</p>
<h3 id="前提条件">前提条件</h3>
<p>为了成功地完成此向导,你必须做下面几项工作:</p>
<ol>
<li>安装VS code</li>
<li>安装Remote - WSL extension</li>
<li>安装Windows Subsystem for Linux,然后在页面链接上安装你选择的Linux发行版本。此教程使用Ubuntu。安装时务必记住你的Linux用户密码,因为在安装其他软件时需要它。</li>
</ol>
<h3 id="设置你的linux环境">设置你的Linux环境</h3>
<ol>
<li>打开WSL的Bash终端。如果你安装了一个Ubuntu发行版,在Windows搜索栏搜索“Ubuntu”然后在结果列表中点击它。对于Debian发行版,搜索“Debian”一样。</li>
</ol>
<div class="textcenter">
<p><img src="https://img2020.cnblogs.com/blog/1542220/202003/1542220-20200319122236115-311329715.png" alt="" loading="lazy"></p>
</div>
<p>终端会显示命令提示符,默认由你的用户名和电脑名组成,并将你至于用户的家目录下。在Ubuntu上看起来像这样:</p>
<div class="textcenter">
<p><img src="https://img2020.cnblogs.com/blog/1542220/202003/1542220-20200319122911028-1347270500.png" alt="" loading="lazy"></p>
</div>
<ol start="2">
<li>创建一个目录<code>projects</code>,然后在其中创建子目录<code>helloworld</code>:</li>
</ol>
<pre><code>mkdir projects
cd projects
mkdir helloworld
</code></pre>
<ol start="3">
<li>
<p>你将会在Linux系统用VS code编辑源代码,也会用g++编译器编译代码。同时,你也会在Linux中用GDB进行调试。这些工具在Ubuntu中默认不安装,所以你要亲自安装它们。幸运的是,这些工作很简单!</p>
</li>
<li>
<p>在WSL的命令提示符中,先运行<code>apt-get update</code>来更新Ubuntu的包列表。过时的版本有时会干扰新软件包的安装。</p>
</li>
</ol>
<pre><code>sudo apt-get update
</code></pre>
<p>你也可以执行<code>sudo apt-get update && sudo apt-get dist-upgrade</code>指令,下载最新版本的系统包,但是这会因为网络连接速度的约束而花费更多时间。</p>
<ol start="5">
<li>在命令行中安装GNU编译工具和GDB调试工具,命令如下:</li>
</ol>
<pre><code>sudo apt-get install build-essential gdb
</code></pre>
<ol start="6">
<li>通过定位g++和gdb来核实安装是否成功。如果文件名没有在<code>whereis</code>命令中返回,试试再次运行更新命令。</li>
</ol>
<pre><code>whereis g++
whereis gdb
</code></pre>
<blockquote>
<p>注:安装g++编译器和GDB调试器的步骤在Linux设备上进行而不是WSL。你要在你的helloworld工程中运行VS code,以及编辑、编译和调试。</p>
</blockquote>
<h3 id="在wsl中运行vs-code">在WSL中运行VS code</h3>
<p>在WSL的终端里切换到你的helloworld工程目录,用<code>code .</code>打开VS code:</p>
<pre><code>cd $HOME/projects/helloworld
code .
</code></pre>
<p>你会看到一条“安装VScode Server”的消息。这时VS code正在给Linux端下载并安装一个小服务器,桌面上的VS code会和它建立联系。随后VS code会启动并打开<code>helloworld</code>目录。文件管理器在标题栏显示<strong></strong>,代表VS code正在WSL中运行。</p>
<div class="textcenter">
<p><img src="https://img2020.cnblogs.com/blog/1542220/202003/1542220-20200320085810838-2106746215.png" alt="" loading="lazy"></p>
</div>
<p>你也可以在状态栏看到远程环境</p>
<div class="textcenter">
<p><img src="https://img2020.cnblogs.com/blog/1542220/202003/1542220-20200320090405652-915797062.png" alt="" loading="lazy"></p>
</div>
<p>如果点击远程状态栏,你会看到远程命令会话的列表。比如,你想结束WSL上的会话,你就可以在列表中选择 <strong>关闭远端连接</strong> 命令。在WSL命令提示符中执行 <code>code .</code> 命令会重新启动VS code。</p>
<p><strong>code .</strong> 命令会在当前目录打开VS code,这个目录就是你的“工作空间”。随着教程的进行,你将看到在工作目录的<code>.vscode</code>目录中会创建三个文件:</p>
<ul>
<li><code>c_cpp_properties.json</code>(编译路径和智能配置)</li>
<li><code>tasks.json</code>(编译说明)</li>
<li><code>launch.json</code>(调试设置)</li>
</ul>
<h3 id="添加源代码文件">添加源代码文件</h3>
<p>在文件管理标题栏上选择 <strong>新文件</strong> 按钮,创建一个 <code>helloworld.cpp</code> 文件。</p>
<div class="textcenter">
<p><img src="https://img2020.cnblogs.com/blog/1542220/202003/1542220-20200320093901291-2022636001.png" alt="" loading="lazy"></p>
</div>
<h4 id="安装cc扩展">安装C/C++扩展</h4>
<p>创建文件后,VS code会识别出它是个C++语言的文件,如你没有安装Microsoft C/C++ extension,它会提示你进行安装。</p>
<div class="textcenter">
<p><img src="https://img2020.cnblogs.com/blog/1542220/202003/1542220-20200320095031085-267993987.png" alt="" loading="lazy"></p>
</div>
<p>扩展窗口显示操作按钮,选择安装,然后重新加载,完成C/C++扩展的安装。</p>
<p>如果你已经在VS code中本地安装了C/C++语言的扩展,你要在扩展扩展窗口(<kbd>Ctrl</kbd>+Shift+X)中把那些扩展安装到WSL中。选择 <strong>安装到WSL</strong> 按钮并 <strong>重新加载</strong> ,本地安装的扩展就会安装到WSL上。</p>
<div class="textcenter">
<p><img src="https://img2020.cnblogs.com/blog/1542220/202003/1542220-20200320102531800-1753190483.png" alt="" loading="lazy"></p>
</div>
<h4 id="添加helloworld源代码">添加helloworld源代码</h4>
<p>粘贴这段代码</p>
<pre><code>#include <iostream>
#include <vector>
#include <string>
using namespace std;
int main()
{
vector<string> msg {"Hello", "C++", "World", "from", "VS Code", "and the C++ extension!"};
for (const string& word : msg)
{
cout << word << " ";
}
cout << endl;
}
</code></pre>
<p>按<kbd>Ctrl+S</kbd>保存文件。在VS code侧边栏的 <strong>文件管理</strong> 窗口(<kbd>Ctrl+Shift+E</kbd>)中,注意你刚添加的文件是怎样显示的。</p>
<div class="textcenter">
<p><img src="https://img2020.cnblogs.com/blog/1542220/202003/1542220-20200321163345338-1204472125.png" alt="" loading="lazy"></p>
</div>
<p>你也可以打开自动保存功能,自动保存文件的改动,在 <strong>文件</strong> 主菜单中点击 <strong>自动保存</strong> 。</p>
<p>你可以在最左侧的活动栏打开不同窗口,比如 <strong>搜索</strong> 、 <strong>源代码管理</strong> 和 <strong>运行</strong> 。在这个教程的后面你会看到 <strong>运行</strong> 窗口。你可以在VS code用户接口文档找到更多关于其他窗口的信息。</p>
<h3 id="智能提示">智能提示</h3>
<p>在新建的 <code>helloworld.cpp</code> 文件中,把鼠标停在 <code>vector</code> 或者 <code>string</code> 上可以看到类型信息。声明 <code>msg</code> 变量后,你想调用它的成员函数就要以 <code>msg.</code> 开头。之后你会看到一个完整的列表显示所有成员函数,旁边还有一个窗口显示 <code>msg</code> 对象的类型信息。</p>
<div class="textcenter">
<p><img src="https://img2020.cnblogs.com/blog/1542220/202003/1542220-20200321165233515-1885773866.png" alt="" loading="lazy"></p>
</div>
<p>你可以按 <code>Tab</code> 键插入选择的成员函数;之后,当写上左括号时,你会看到该函数所有参数的信息。</p>
<h3 id="编译helloworldcpp">编译helloworld.cpp</h3>
<p>接下来,你要创建 <code>tasks.json</code> 文件,告诉VS code怎样编译程序。这个工作会借助WSL的g++编译器创建一个源代码的可执行文件。</p>
<p>在主菜单栏选择 <strong>终端</strong> > <strong>配置默认生成任务</strong> ,出现一个下拉列表,展示了各种预定义的C++编译器。选择 <strong>g++ build active file</strong> ,这个选项会创建一个在编辑器中立刻显示。</p>
<div class="textcenter">
<p><img src="https://img2020.cnblogs.com/blog/1542220/202003/1542220-20200323201901651-897318048.png" alt="" loading="lazy"></p>
</div>
<p>这个步骤会在<code>.vscode</code>目录中创建一个<code>tasks.json</code>文件,并在编辑器中打开它。</p>
<p>新创建的 <code>tasks.json</code> 文件应该像JSON格式,比如下面这样:</p>
<pre><code>{
"version": "2.0.0",
"tasks": [
{
"type": "shell",
"label": "g++ build active file",
"command": "/usr/bin/g++",
"args": ["-g", "${file}", "-o", "${fileDirname}/${fileBasenameNoExtension}"],
"options": {
"cwd": "/usr/bin"
},
"problemMatcher": ["$gcc"],
"group": {
"kind": "build",
"isDefault": true
}
}
]
}
</code></pre>
<p><code>command</code>选项指明要运行的程序,这个例子中时g++。 <code>args</code>数组指明要传给g++的命令行参数,这些参数的顺序必须符合编译器要求。这项工作是调用g++编译目标文件(<code>${file}</code>),并在当前目录(<code>${fileDirname}</code>)创建一个没有文件后缀的、与目标文件同名的可执行文件,此教程中的例子创建<code>helloworld</code>文件。</p>
<blockquote>
<p>注:你可以在变量参考了解更多关于 <code>tasks.json</code> 的变量内容。</p>
</blockquote>
<p><code>label</code>选项的值会在任务列表中显示,你可以任性地修改它。</p>
<p><code>group</code>对象中的<code>"isDefault":true</code>内容代表按<kbd>Ctrl+Shift+B</kbd>快捷键开始工作。这项配置只是为了方便;如果你把它设为false,你仍然可以在终端菜单中用<strong>运行生成任务</strong>来运行。</p>
<h4 id="运行编译">运行编译</h4>
<ol>
<li>
<p>返回<code>helloworld.cpp</code>。你将编译<code>helloworld.cpp</code>。</p>
</li>
<li>
<p>按<code>Ctrl+Shift+B</code>或者在<strong>终端</strong>主菜单中选择<strong>运行生成任务</strong>,运行定义在<code>tasks.json</code>文件的编译任务。</p>
</li>
<li>
<p>任务开始时,源代码编辑框下面会出现终端面板。编译完成后,终端会输出编译是否成功的相关信息。编译成功的样子像这样:</p>
</li>
</ol>
<div class="textcenter">
<p><img src="https://img2020.cnblogs.com/blog/1542220/202003/1542220-20200323204912296-1217295922.png" alt="" loading="lazy"></p>
</div>
<ol start="4">
<li>点击+按钮创建新终端,这个终端运行在WSL环境中,以<code>helloworld</code>文件的目录为工作目录。执行<code>ls</code>命令可以看到可执行文件<code>helloworld</code>(没有文件后缀)。</li>
</ol>
<div class="textcenter">
<p><img src="https://img2020.cnblogs.com/blog/1542220/202003/1542220-20200323205326649-2120927420.png" alt="" loading="lazy"></p>
</div>
<ol start="5">
<li>在终端输入<code>./helloworld</code>运行<code>helloworld</code>。</li>
</ol>
<h4 id="修改tasksjson">修改tasks.json</h4>
<p>你可以<code>tasks.json</code>来比编译更多C++文件,比如用<code>".cpp"</code>代替<code>${file}</code>。你也可以将<code>${fileDirname}/${fileBasenameNoExtension}</code>换成一个固定的名字来修改输出的文件名(比如改成“helloworld.out”)。</p>
<h3 id="调试helloworldcpp">调试helloworld.cpp</h3>
<p>接下来,你要创建一个<code>launch.json</code>文件来配置VS code,让它在你按<code>F5</code>时调用GDB调试程序。在主菜单选择<strong>运行</strong> > <strong>添加配置…</strong> 然后选择 <strong>C++(GDB/LLDB)</strong>。</p>
<p>出现一个列表显示各种预定义的调试配置。选择<strong>g++ build and debug active file</strong>。</p>
<div class="textcenter">
<p><img src="https://img2020.cnblogs.com/blog/1542220/202003/1542220-20200323210632128-642210100.png" alt="" loading="lazy"></p>
</div>
<p>VS code创建一个<code>launch.json</code>文件并在编辑器中打开,然后编译运行“helloworld”。</p>
<pre><code>{
"version": "0.2.0",
"configurations": [
{
"name": "g++ build and debug active file",
"type": "cppdbg",
"request": "launch",
"program": "${fileDirname}/${fileBasenameNoExtension}",
"args": [],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [],
"externalConsole": false,
"MIMode": "gdb",
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
],
"preLaunchTask": "g++ build active file",
"miDebuggerPath": "/usr/bin/gdb"
}
]
}
</code></pre>
<p><code>program</code>选项指定要调试的程序。这里设置的目标文件目录<code>${fileDirname}</code>和无扩展名的目标文件<code>${fileBasenameNoExtion}</code>对应<code>helloworld.cpp</code>生成的目标文件<code>helloworld</code>。</p>
<p>这里默认,C++扩展不会源代码中添加任何断点,<code>stopAtEntry</code>的值为<code>false</code>。将<code>stopAtEntry</code>设为<code>true</code>会在开始调试时停在<code>main</code>函数位置。</p>
<p>剩下的步骤时可选联系,可以帮助你熟悉编辑和调试。</p>
<h4 id="开始调试会话">开始调试会话</h4>
<ol>
<li>
<p>返回<code>helloworld.cpp</code>,这是目前的目标文件。</p>
</li>
<li>
<p>按<code>F5</code>或主菜单选择<strong>运行</strong> > <strong>启动调试</strong>。在单步调试之前,我们用一分钟来了解一下用户界面的改变:</p>
</li>
</ol>
<ul>
<li>代码编辑框下面出现终端。在调试控制台标签中,你可以看到调试器开始运行的输出信息。</li>
<li>编辑器在<code>main</code>函数的第一行高亮显示。这是C++默认为你设置的断点:</li>
</ul>
<div class="textcenter">
<p><img src="https://img2020.cnblogs.com/blog/1542220/202003/1542220-20200323213429036-1204292206.png" alt="" loading="lazy"></p>
</div>
<ul>
<li>左侧运行窗口显示调试信息。在此向导的后面有例子。</li>
<li>在编辑器顶部出现一个调试控制面板。你可以抓着左侧的几个点移动它。</li>
</ul>
<div class="textcenter">
<p><img src="https://img2020.cnblogs.com/blog/1542220/202003/1542220-20200323213730147-1356082979.png" alt="" loading="lazy"></p>
</div>
<h3 id="单步调试代码">单步调试代码</h3>
<p>现在你可以准备开始单步调试代码了。</p>
<ol>
<li>在调试控制面板上点击<strong>Step over</strong>图表。</li>
</ol>
<div class="textcenter">
<p><img src="https://img2020.cnblogs.com/blog/1542220/202003/1542220-20200323213949740-1837560285.png" alt="" loading="lazy"></p>
</div>
<p>这会让程序执行到循环的第一行,并在创建和初始化<code>msg</code>变量时跳过<code>vector</code>和<code>string</code>类的所有内部函数。注意左侧变量窗口的变化。</p>
<div class="textcenter">
<p><img src="https://img2020.cnblogs.com/blog/1542220/202003/1542220-20200324083052914-520706566.png" alt="" loading="lazy"></p>
</div>
<p>这个例子中,理应会出现问题,虽然变量名对循环来说是可见的,但是还没有执行到,所以这一步没有内容可以读。<code>msg</code>变量可以看到,因为那条语句已经完成了。</p>
<ol start="2">
<li>
<p>再次按<strong>Step over</strong>让程序执行到下一个声明(跳过所有初始化循环的内部代码)。现在,<strong>变量</strong>窗口会展示循环中的变量信息。</p>
</li>
<li>
<p>再按<strong>Step over</strong>执行到<code>cout</code>语句。(注意,在2019年3月发行的VS code中,C++扩展在循环结束前不会在调试控制台输出任何信息。)</p>
</li>
<li>
<p>你可以一直按<strong>Step over</strong>直到向量中的所有单词都打印出来。如果你对<strong>Step Into</strong>按钮很好奇,可以点击它试一试,这会跳到C++标准库代码的内部!</p>
</li>
</ol>
<div class="textcenter">
<p><img src="https://img2020.cnblogs.com/blog/1542220/202003/1542220-20200324085541797-971668555.png" alt="" loading="lazy"></p>
</div>
<p>要想回到你的代码,一个方法是一直按<strong>Step over</strong>;另一个方法是切换到<code>helloworld.cpp</code>中,在程序循环内的<code>cout</code>语句处按<code>F9</code>添加断点。在左侧空白位置出现一个红点表明断点已添加到这一行。</p>
<div class="textcenter">
<p><img src="https://img2020.cnblogs.com/blog/1542220/202003/1542220-20200324090123242-1552361683.png" alt="" loading="lazy"></p>
</div>
<p>然后按<code>F5</code>在标准库中开始执行,程序会停在<code>cout</code>语句的位置。以可以再次按<code>F9</code>取消断点。</p>
<p>循环结束后,在调试控制台可以看到输出信息,同时还有GDB的其他调试信息。</p>
<div class="textcenter">
<p><img src="https://img2020.cnblogs.com/blog/1542220/202003/1542220-20200324090820674-1383335990.png" alt="" loading="lazy"></p>
</div>
<h3 id="设置监视器">设置监视器</h3>
<p>有时,你可能想在程序执行时跟踪变量的值。你可以为变量设置监听实现这一功能。</p>
<ol>
<li>把光标聚焦在循环中,在<strong>监视</strong>窗口点击添加表达式然后输入循环的变量<code>word</code>。接下来,在调试时看着监视窗口。</li>
</ol>
<div class="textcenter">
<p><img src="https://img2020.cnblogs.com/blog/1542220/202003/1542220-20200324091442043-593455126.png" alt="" loading="lazy"></p>
</div>
<ol start="2">
<li>
<p>在循环前加<code>int i = 0;</code>语句,在循环中添加<code>++i</code>语句,同上一步添加<code>i</code>变量的监视。</p>
</li>
<li>
<p>执行到断点时,如果想快速看到任何变量的值,你可以把鼠标停在它上面。</p>
</li>
</ol>
<div class="textcenter">
<p><img src="https://img2020.cnblogs.com/blog/1542220/202003/1542220-20200324091941538-1751767586.png" alt="" loading="lazy"></p>
</div>
<h3 id="cc配置">C/C++配置</h3>
<p>如果你想对C/C++扩展进行更多控制,你可以创建一个<code>c_cpp_properties.json</code>文件,在其中可以配置很多设置,比如编译器路径、头文件包含路径和C++标准(默认C++17)等等。</p>
<p>你可以在命令面板(<code>Ctrl+Shift+P</code>)运行<strong>C/C++: Edit Configurations (UI)</strong>命令打开C/C++用户界面配置。</p>
<div class="textcenter">
<p><img src="https://img2020.cnblogs.com/blog/1542220/202003/1542220-20200324092520779-32143387.png" alt="" loading="lazy"></p>
</div>
<p>这会打开<strong>C/C++配置</strong>页面。当你在其中进行修改时,VS code会把修改内容写到<code>.vscode</code>目录的<code>c_cpp_properties.json</code>文件中。</p>
<div class="textcenter">
<p><img src="https://img2020.cnblogs.com/blog/1542220/202003/1542220-20200324092744424-1769943378.png" alt="" loading="lazy"></p>
</div>
<p>如果你的程序的头文件不再工作目录或标准库的头文件中,你只修改<strong>Include path</strong>就够了。</p>
<p>VS code会将这些设置放到<code>.vscode/c_cpp_properties.json</code>文件中,如果直接打开它,它看起来像这样:</p>
<pre><code>{
"configurations": [
{
"name": "Linux",
"includePath": ["${workspaceFolder}/**"],
"defines": [],
"compilerPath": "/usr/bin/gcc",
"cStandard": "c11",
"cppStandard": "c++17",
"intelliSenseMode": "clang-x64"
}
],
"version": 4
}
</code></pre>
<h3 id="关闭wsl会话">关闭WSL会话</h3>
<p>当你在WSL上完成工作后,你可以在主<strong>文件</strong>菜单和命令面板(<code>Ctrl+Shift+P</code>)执行<strong>关闭远程连接</strong>命令退出会话。这会重新启动运行在本地的VS code。你可以在<strong>文件</strong> > <strong>最近打开列表</strong>中选择带**[ WSL] **后缀的文件,重新打开WSL会话。</p>
<h3 id="其他步骤">其他步骤</h3>
<ul>
<li>探索VS code用户导航。</li>
<li>回顾C++扩展概述。</li>
<li>创加一个新的工作空间,把你的.json文件复制到其中,为新的工作空间调整需要的设置,程序名等等,然后开始敲代码!</li>
</ul>
<h1 id="配置总结">配置总结</h1>
<p>文档讲的是在WSL上的ubuntu系统,不影响直接在ubuntu系统中进行配置。打开一个目录作为工作空间,设置时会在.vscode目录下创建两个文件tasks.json和launch.json。可以直接手动创建目录和文件,不用在VS code中设置。</p>
<ul>
<li>创建<code>tasks.json</code>文件,用于编译。菜单栏选择 终端 > 配置默认生成任务 ,出现一个下拉列表,展示了各种预定义的C++编译器。选择 g++ build active file。参考如下:</li>
</ul>
<pre><code>{
"version": "2.0.0",
"tasks": [
{
"type": "shell",
"label": "g++ go!go!go!",
"command": "/usr/bin/g++",
"args": [
"-g",
"${file}",
"-o",
"${fileDirname}/${fileBasenameNoExtension}"
],
"options": {
"cwd": "/usr/bin"
},
"problemMatcher": [
"$gcc"
],
"group": {
"kind": "build",
"isDefault": true
}
}
]
}
</code></pre>
<p>command指明g++。args数组g++参数。当前文件目录<code>${fileDirname}</code>。无文件后缀的、与源文件同名的可执行文件<code>${fileBasenameNoExtension}</code>。label随便改。<br>
isDefault:true代表按Ctrl+Shift+B快捷键开始工作。详细内容参考Variables Reference。</p>
<ul>
<li>创建<code>launch.json</code>文件,用于运行调试。主菜单选择运行(调试) > 添加配置… 然后选择 C++(GDB/LLDB)。选g++ build and debug active file。launch.json参考:</li>
</ul>
<pre><code>{
// 使用 IntelliSense 了解相关属性。
// 悬停以查看现有属性的描述。
// 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "come on!",
"type": "cppdbg",
"request": "launch",
"program": "${workspaceFolder}/${fileBasenameNoExtension}",
"args": [],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [],
"externalConsole": false,
"MIMode": "gdb",
"setupCommands": [
{
"description": "为 gdb 启用整齐打印",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
]
}
]
}
</code></pre>
<p>program选项指定要调试的程序。</p>
<p>之后就能编译、调试了。调试前记得先编译源文件。</p><br><br>
来源:https://www.cnblogs.com/foxer-z/p/12520904.html
頁:
[1]