vscode 的 c++ 调试环境构建
我用 vscode 调试主要有几个:
我的 vscode 版本是 1.55.0
本机调试环境构建
环境准备
注意说明
如果是使用 cmake 进行作为编译工具,首先需要增加 -g选项, 然后设置 debug 模式,如果cmakelist中有O3优化,请改成O0。 举例如下:
set(CMAKE_BUILD_TYPE debug)
set(CMAKE_CXX_FLAGS "-O0 -pipe -Wall -g")
add_definitions("-g")
如果通过 makefile 进行编译程序的话,增加 -g的编译选项,举例如下:
CC:= g++
APP:= client
APP_INSTALL_DIR?=/home/cc/bin/
SRCS:= $(wildcard *.cpp)
INCS:= $(wildcard *.h)
OBJS:= $(SRCS:.cpp=.o)
CFLAGS += -I -I /usr/local/include -fPIC -std=c++11 -g # -g
LIBS := -L/usr/local/lib/ -lopencv_imgproc -lopencv_core -lopencv_highgui -lopencv_imgcodecs -ldl -lm -lpthread
all: $(APP)
%.o: %.c $(INCS) Makefile
$(CC) -c -o $@ $(CFLAGS) $<
$(APP): $(OBJS) Makefile
$(CC) -o $(APP) $(OBJS) $(LIBS)
install: $(APP)
cp -rv $(APP) $(APP_INSTALL_DIR)
clean:
rm -rf $(OBJS) $(APP)
cmake 调试步骤
[proc] Executing command: /home/cc/software/cmake-3.16.0-rc1-Linux-x86_64/bin/cmake --no-warn-unused-cli -DCMAKE_EXPORT_COMPILE_COMMANDS:BOOL=TRUE -DCMAKE_BUILD_TYPE:STRING=Release -DCMAKE_C_COMPILER:FILEPATH=/usr/bin/gcc-7 -DCMAKE_CXX_COMPILER:FILEPATH=/usr/bin/g++-7 -H/home/cc/work/c++_project/alpha_pose_demo -B/home/cc/work/c++_project/alpha_pose_demo/build -G "Unix Makefiles"
[cmake] Not searching for unused variables given on the command line.
[cmake] -- OpenCV library status:
[cmake] -- version: 3.2.0
[cmake] -- libraries: opencv_calib3d;opencv_core;opencv_features2d;opencv_flann;opencv_highgui;opencv_imgcodecs;opencv_imgproc;opencv_ml;opencv_objdetect;opencv_photo;opencv_shape;opencv_stitching;opencv_superres;opencv_video;opencv_videoio;opencv_videostab;opencv_viz;opencv_aruco;opencv_bgsegm;opencv_bioinspired;opencv_ccalib;opencv_datasets;opencv_dpm;opencv_face;opencv_freetype;opencv_fuzzy;opencv_hdf;opencv_line_descriptor;opencv_optflow;opencv_phase_unwrapping;opencv_plot;opencv_reg;opencv_rgbd;opencv_saliency;opencv_stereo;opencv_structured_light;opencv_surface_matching;opencv_text;opencv_ximgproc;opencv_xobjdetect;opencv_xphoto
[cmake] -- include path: /usr/include;/usr/include/opencv
[cmake] -- Configuring done
[cmake] -- Generating done
[cmake] -- Build files have been written to: /home/cc/work/c++_project/alpha_pose_demo/build
配置完所有的属性后,点击 Build 按钮,就会开始构建工程
设置断点,点击 "瓢虫"(调试) 按钮
配置 **launch.json** 进行调试
如果点击调试按钮无法调试的话,可以使用配置json文件来调试(Makefile 编译的程序也可以使用这种方法调试)
然后选择环境(我是linux系统,所以选择 C++(GDB/LLDB))
然后选择默认配置
之后会生成一个json
根据自己的需求修改json文件中的参数,参数说明参考https://code.visualstudio.com/docs/cpp/launch-json-reference
"name": "(gdb) 启动", # 名字,可以自由更改
"type": "cppdbg", # 类型,按默认配置
"request": "launch", # 响应方式,按默认配置
"program": "输入程序名称,例如 ${workspaceFolder}/a.out", # 调试的应用程序, 填写调试程序的绝对路径
"args": [], # 应用程序的 参数,根据自己的需求,来填写,举例说明 ["args1","args2"],无参数就不管
"stopAtEntry": false, # 是否在main的开始中断,设置 true 调试就会中断在程序开始
"cwd": "${workspaceFolder}", # 调试时程序的工作目录
"environment": [], # 环境变量,根据自己的需求设置
"externalConsole": false, # 额外的控制终端,设置 true 会新建一个终端
"MIMode": "gdb", # 调试的模式,只能是gdb和lldb
"setupCommands": [ # 设置GDB或LLDB而要执行的命令的JSON数组,我也没有用过这个功能
{
"description": "为 gdb 启用整齐打印",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
]
配置完成之后,就可以使用 F5 进行调试,或者选择 ** Run and Debug ** 的区域 点击小三角形按钮进行调试 。
然后直接点击 按钮** Run and Debug ** 或者 点击 ** create a launch.json file **
之后的操作就跟方法一一样
遇到的问题
[rollbar] Unhandled exception: Unhandled Promise rejection: build Error: Build failed: Unable to configure the project {}
原因: cmake 的路径错误(因为我的cmake是直接下载的可执行程序)
解决方法: 在设置中指定 cmake的路径
配合 gdbserver 远程调试开发板环境构建
环境准备
调试步骤
/mnt # gdbserver Usage: gdbserver [OPTIONS] COMM PROG [ARGS ...] gdbserver [OPTIONS] --attach COMM PID gdbserver [OPTIONS] --multi COMMCOMM may either be a tty device (for serial debugging),HOST:PORT to listen for a TCP connection, or ‘-‘ or ‘stdio‘ to use stdin/stdout of gdbserver.PROG is the executable program. ARGS are arguments passed to inferior.PID is the process ID to attach to, when --attach is specified.
举例说明
./gdbserver-7.10.1-arm6v 192.168.53.25:1000 client_multi ../temp0/
docker 容器调试环境构建
环境准备
调试步骤
vscode 进入到运行中的容器
点击图像标记的按钮
之后选择进入到运行中的容器
然后根据自己的需求选择进入哪个容器
在容器中安装插件
进入到容器后,就可以将插件安装到容器中
调试方式就参考本机调试步骤,可以通过 cmake配置调试,也可以通过配置json进行调试
原文:https://www.cnblogs.com/cc1784380709/p/14666989.html