信创之国产浪潮电脑+统信UOS Linux操作系统体验10:visual studio code中调试C++程序

发布时间:2024年01月01日
? ? 前往老猿Python博客 ? https://blog.csdn.net/LaoYuanPython

一、引言

老猿在CSDN的《信创之国产浪潮电脑+统信UOS操作系统体验2:安装visual studio code和cmake搭建C++开发环镜》介绍了在国产浪潮电脑+统信UOS操作系统中安装visual studio code和cmake搭建C++开发环镜的过程及案例.

同时在CSDN的《信创之国产浪潮电脑+统信UOS操作系统体验9:使用vscode构建的配置任务编译C++程序》介绍了通过vscode构建配置任务并手工调整配置文件后,生成用于编译多个文件的C++项目的生成任务过程及配置解释。

但上述过程仅限于编译,无法执行调试,本文以案例介绍通过菜单在vscode中执行编译和调试的方法。

二、安装gdb调试器

vscode本身并不能支持调试C++程序,为了调试程序,需要先在统信UOS操作系统上安装gdb调试器,然后在vscode中进行调试相关配置。

在统信UOS操作系统上安装gdb调试器使用如下指令:

sudo apt-get install gdb

安装成功后在操作终端内就可以直接执行gdb命令,gdb安装的路径为:/usr/bin,在统信操作系统中还有个:/bin 的路径,这是/usr/bin目录的一个软连接,因此gdb的路径即可以是/usr/bin/gdb,也可以是/bin/gdb。

三、配置并执行编译任务

本次使用的测试代码及编译任务的配置与老猿在CSDN的《信创之国产浪潮电脑+统信UOS操作系统体验9:使用vscode构建的配置任务编译C++程序》介绍的一样。

但要注意的是要生成调试程序,g++的编译参数要有“-g”参数,具体配置的task.json文件内容如下:

{
	"version": "2.0.0",
	"tasks": [
		{
			"type": "cppbuild",
			"label": "C/C++: g++ 生成活动文件",
			"command": "/usr/bin/g++",
			"args": [
				"-fdiagnostics-color=always",
				"-g",
				"${fileDirname}/hello.cpp",
				"${fileDirname}/set.cpp",
				"-o",
				"${fileDirname}/${fileBasenameNoExtension}"
			],
			"options": {
				"cwd": "${fileDirname}"
			},
			"problemMatcher": [
				"$gcc"
			],
			"group": {
				"kind": "build",
				"isDefault": true
			},
			"detail": "编译器: /usr/bin/g++"
		}
	]
}

关于tasks的配置请参考老猿在CSDN的《信创之国产浪潮电脑+统信UOS操作系统体验8:Visual Studio Code中的任务文件tasks.json和任务配置要素介绍》的介绍。

配置编译任务后就可以执行编译了,在vscode选择:终端->运行生成任务
在这里插入图片描述

执行成功:
在这里插入图片描述

四、执行调试任务

此时在菜单中选择:运行->启动调试,就可以执行调试任务了:
在这里插入图片描述
可以在代码右边单击鼠标右键设置断点,在右上部位点击几个图标执行:继续往下执行(F5)、逐过程(F10)、单步调试(F11)等调试动作,也可以通过左边的窗口观看变量数据并设置监视的数据。

五、定制设置调试任务

上面通过编译后直接执行调试即可对程序进行调试,但对于一些特定场景,上述这种操作无法满足调试要求,需要单独配置配置launch.json的调试配置文件。

launch.json文件是用于配置VS Code在调试程序时的启动方式和参数的文件。通过编辑launch.json文件,可以指定要调试的程序、调试器的类型、启动参数等信息,以便在按下F5键时启动调试会话。

在VSCode中调试C++程序时,必须配置launch.json的情况有以下几种:

  1. 需要自定义调试配置:例如指定程序的运行参数、环境变量等,如下面这种配置:
{
  "version": "0.2.0",
  "configurations": [
    {
      "name": "Debug with custom arguments",
      "type": "cppdbg",
      "request": "launch",
      "program": "${workspaceFolder}/main.cpp",
      "args": ["arg1", "arg2"],
      "environment": [
        {
          "name": "LD_LIBRARY_PATH",
          "value": "/usr/local/opencv430/lib:/usr/local/opencv430/lib"
        }
      ]
    }
  ]
}
  1. 需要使用不同的调试器:默认情况下,vscode使用的是C/C++ extension提供的调试器,例如lldb或gdb。但是,如果要使用其他调试器,例如CodeLLDB,就需要配置launch.json来指定使用的调试器
  2. 需要配置远程调试:如果需要在远程机器上调试C++程序,就需要配置launch.json来指定远程机器的连接信息,其配置形式如下所示:
{
  "version": "0.2.0",
  "configurations": [
    {
      "name": "Debug on remote machine",
      "type": "cppdbg",
      "request": "launch",
      "program": "/path/to/remote/main.cpp",
      "miDebuggerServerAddress": "remote-machine-ip:port"
    }
  ]
}

关于launch.json的配置在此就不展开进一步介绍了。

小结

本文简单介绍了在vscode中调试C++程序的基本步骤,要调试程序时,首先要确保使用g++编译时带“-g”参数,然后进入vscode运行菜单按F5启动调试,如果程序带有参数等场景,还要配置launch.json调试配置文件。

写博不易,敬请支持

如果阅读本文于您有所获,敬请点赞、评论、收藏,谢谢大家的支持!

更多关于统信操作系统及vscode的介绍的内容请参考专栏《国产信创之光》的其他文章。

关于老猿的付费专栏

  1. 付费专栏《https://blog.csdn.net/laoyuanpython/category_9607725.html 使用PyQt开发图形界面Python应用》专门介绍基于Python的PyQt图形界面开发基础教程,对应文章目录为《 https://blog.csdn.net/LaoYuanPython/article/details/107580932 使用PyQt开发图形界面Python应用专栏目录》;
  2. 付费专栏《https://blog.csdn.net/laoyuanpython/category_10232926.html moviepy音视频开发专栏 )详细介绍moviepy音视频剪辑合成处理的类相关方法及使用相关方法进行相关剪辑合成场景的处理,对应文章目录为《https://blog.csdn.net/LaoYuanPython/article/details/107574583 moviepy音视频开发专栏文章目录》;
  3. 付费专栏《https://blog.csdn.net/laoyuanpython/category_10581071.html OpenCV-Python初学者疑难问题集》为《https://blog.csdn.net/laoyuanpython/category_9979286.html OpenCV-Python图形图像处理 》的伴生专栏,是笔者对OpenCV-Python图形图像处理学习中遇到的一些问题个人感悟的整合,相关资料基本上都是老猿反复研究的成果,有助于OpenCV-Python初学者比较深入地理解OpenCV,对应文章目录为《https://blog.csdn.net/LaoYuanPython/article/details/109713407 OpenCV-Python初学者疑难问题集专栏目录
  4. 付费专栏《https://blog.csdn.net/laoyuanpython/category_10762553.html Python爬虫入门 》站在一个互联网前端开发小白的角度介绍爬虫开发应知应会内容,包括爬虫入门的基础知识,以及爬取CSDN文章信息、博主信息、给文章点赞、评论等实战内容。

前两个专栏都适合有一定Python基础但无相关知识的小白读者学习,第三个专栏请大家结合《https://blog.csdn.net/laoyuanpython/category_9979286.html OpenCV-Python图形图像处理 》的学习使用。

对于缺乏Python基础的同仁,可以通过老猿的免费专栏《https://blog.csdn.net/laoyuanpython/category_9831699.html 专栏:Python基础教程目录)从零开始学习Python。

如果有兴趣也愿意支持老猿的读者,欢迎购买付费专栏。

老猿Python,跟老猿学Python!

? ? 前往老猿Python博文目录 https://blog.csdn.net/LaoYuanPython ?
文章来源:https://blog.csdn.net/LaoYuanPython/article/details/133684780
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。