欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

通过vscode在linux系统中调试c++程序(可以运行OpenCV程序)

程序员文章站 2022-04-02 23:01:34
...

1.在linux系统中安装opencv库

这一部分,由于我使用的服务器已经装好,所以不用重复安装。
可见https://blog.csdn.net/sandalphon4869/article/details/94398876

2.vscode配置

2.1 安装c/c++插件

通过vscode在linux系统中调试c++程序(可以运行OpenCV程序)

2.2 编写lauch.json

**执行思路(了解就好):**首先执行preLaunchTask中的内容,也就是根据preLaunchTask的值找到task.json中的任务(即完成编译任务),然后指定gdb调试编译好的可执行文件。

做法(你需要做的):点击左侧的Debug按钮选择添加配置(Add configuration)或者直接按F5,然后选择C++(GDB/LLDB),然后选个Default,将自动生成launch.json文件.

修改成如下:

{
    // 使用 IntelliSense 了解相关属性。 
    // 悬停以查看现有属性的描述。
    // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "name": "g++-5 - 生成和调试活动文件",// 配置名称,将会在启动配置的下拉菜单中显示
            "type": "cppdbg",// 配置类型,cppdbg对应cpptools提供的调试功能;可以认为此处只能是cppdbg
            "request": "launch",// 请求配置类型,可以为launch(启动)或attach(附加)
            "program": "${fileDirname}/${fileBasenameNoExtension}",// 将要进行调试的程序的路径
            "args": [
                //在这里可以添加参数,即./a.out args[1] args[2] ......
                //eg
                "-L",//args[1]
                "datalist.txt",//args[2]
                "-O",//args[3]
                "output.txt"//args[4]
            ],
            "stopAtEntry": false,// 设为true时程序将暂停在程序入口处,相当于在main上打断点
            "cwd": "${fileDirname}",// 调试程序时的工作目录,此为文件所在目录;改成${workspaceFolder}可变为工作区文件夹
            "environment": [],// 环境变量
            "externalConsole": false,//如何你的linux是远程服务器,那设置成false,不然不能运行。我猜是因为远程服务器在本地调用不出外部窗口。
            "MIMode": "gdb",//指定连接的调试器,可以为gdb或lldb。
            "setupCommands": [
                {
                    "description": "为 gdb 启用整齐打印",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                }
            ],
            "preLaunchTask": "Compile",
            "miDebuggerPath": "/usr/bin/gdb"//指定gdb的路径。可以在shell中whereis gdb查看路径。
        }
    ]
}

2.3 配置tasks.json(有OpenCV配置信息)

做法: Ctrl+Shift+P,输入Edit,选择Task:Configure Default Build Task。

修改成如下:

{
	"version": "2.0.0",
	"tasks": [
		{
			"type": "shell",// process是把预定义变量和转义解析后直接全部传给command;shell相当于先打开shell再输入命令,所以args还会经过shell再解析一遍
			"label": "Compile",
			"command": "/usr/bin/g++-5",
			"args": [
				"-g",
				"${file}",
				"-o",
				"${fileDirname}/${fileBasenameNoExtension}",
				"`pkg-config","--libs","--cflags","opencv`" //vscode里`pkg-config --cflags --libs opencv`会导致编译错误,需要拆开写
			],
            "problemMatcher":{
                "owner":"cpp",
                "fileLocation":[
                    "relative",
                    "${fileDirname}"
                ],
                "pattern":[
                    {
                        "regexp": "^([^\\\\s].*)\\\\((\\\\d+,\\\\d+)\\\\):\\\\s*(.*)$",
                        "file": 1,
                        "location": 2,
                        "message": 3
                    }
                ]
            },
            //每次执行都启动一个新的控制台
            "presentation": {
                "reveal": "always",
                "panel": "new",
                "echo": true
            },
            "options": {
                "cwd": "/usr/bin"
            },
            "group": {
                "kind": "build",
                "isDefault": true
            }
        }
	]
}

3.注意说明

  1. 当前很多教程都会配置c_cpp_properties.json文件,但是现在的版本(0.18.0之后)不需要创建这个文件了,cpptools会自动使用默认的设置。所以本文也不再包含此文件的配置。
  2. 一般只要修改task.json中g++部分即可。
    通过vscode在linux系统中调试c++程序(可以运行OpenCV程序)

 如何查看g++路径?默认创建模板的时候会自带或者在linux命令行中输入:whereis g++
3.lauch.json中preLaunchTask的值要和task.json中label的值要相同。

参考网址

  1. https://www.zhihu.com/question/30315894
  2. https://blog.csdn.net/sandalphon4869/article/details/94398876
相关标签: linux c++