一、配置程序运行依赖
1, 打开配置文件(launch.json)
(1) 从工具栏打开Run–>Add Configuration…
(2)查看配置文件(launch.json)
2,添加配置
(1) 配置可执行程序(program);
(2) 指明调试器类型(type);
(3) 可执行程序工作目录(cwd);
(4) 配置可执行程序输入参数(args);
(5) 添加可执行程序依赖的环境变量(environment);
(6) 添加调试器(MIMode) ;
3, 配置参数介绍
(1)name
:配置的名字,可以存在不同配置,一般是一个调试目标有一个配置(显示在调试侧边栏上下拉选择列表中);
(2)type
:表明调试器的类型,使用Visual Studio Windows Debuger的时候必须是cppvsdbg
;使用GDB或者LLDB时为cppdbg
;
(3) request
:表明是执行(launch
)目标程序,还是连接(attach
)已有的实例;
(4)program
:表明调试的目标程序;
(5)args
:执行目标参数需要的参数,格式为json列表;
(6) cwd
:目标程序执行的工作目录;
(7) MIMode
:表明使用的调试器,gdb
或者是lldb
;
(8) preLaunchTask
:就是在开始调试前需要执行的任务,定义在task.json
文件中,一般用来定义编译任务,生成目标程序。
// launch.json示例
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "gcc - 生成和调试活动文件",
"type": "cppdbg",
"request": "launch",
"program": "/home/sbinhuang/Desktop/workspace/self_utility/test/test_exec",
"args": [],
"stopAtEntry": false,
"cwd": "/home/sbinhuang/Desktop/workspace/self_utility/test",
"environment": [
{"name": "LD_LIBRARY_PATH", "value": "/home/sbinhuang/Desktop/workspace/self_utility/bin/self_utility"}
],
"externalConsole": false,
"MIMode": "gdb",
}
]
}
二、调试程序
1,添加断点
(1)打开源文件(cpp),鼠标点击代码行左侧区域,出现一个红点,标识此处被设置为一个断点;
2,开启调试模式,运行可执行程序
(1) 工具栏Run–> Start Debugging
(2) 步骤(1)操作后,进入程序调试界面,左边栏时调试时,变量值和程序调用栈;右边是代码以及显示程序执行到的位置;
(3) 控制程序运行
3,调试多进程程序
(1) 调试程序运行到创建一个子进程时,设置跟踪控制的进程;需要在调试终端命令行串口输入命令(set follow-fork-mode mode);
# 调试子进程
set follow-fork-mode child
# 调试当前进程
set follow-fork-mode parent
(2) 调试当前进程,设置当前进程模式
(3) 调试子进程,设置子进程模式
(4) 当前进程模式,调试示例
(4) 子进程模式,调试示例
三、注意事项
(1)fork(), system()产生子进程,调试时,切换到子进程后,立即设置set follow-fork-mode parent, 避免陷入下一级子进程;
(2)参考文章
https://code.visualstudio.com/docs/cpp/launch-json-reference
https://code.visualstudio.com/docs/cpp/config-linux