前面一节简单的介绍了VSCODE的简单调试功能,对于复杂的调试应用需要我们配置launch.json
调试器配置文件。
一、launch.json的属性
1.1 必要属性
- type:调试器类型
- request:调试器模式
- launch
- attach
name:配置名
1.2 可选属性
- presentation:order、group和hidden属性定义调试配置的显示
- preLaunchTask:调试前任务
- postDebugTask:调试后任务
- internalConsoleOptions:定义调试控制台显示
- serverReadyAction:设置调试时自动在浏览器打开URL
1.3 大多数调试器具备属性
- program:可执行程序或源代码
- args:要传递给程序的参数
- env:环境变量
- cwd:调试器工作目录,默认
$workspaceFolder$
- port:要附加到的进程的端口
- stopOnEntry:是否在程序入口处断点
- console:指定程序输出位置
- internalConsole:VSCODE的调试控制台
- integratedTerminal:VSCODE的集成终端
- externalTerminal:系统的终端
当然了,作为跨平台的VSCODE肯定回对不同系统的配置进行识别:
- “windows”
- “osx”
- “linux”
多目标调试,可以使用compounds
选项。
二、变量替换
2.1 VSCODE和CMAKE内部变量辅助任务
一个程序可以通过环境变量来访问系统中的文件和程序,之所以这么做是为了“泛化”文件路径,我不需要知道这个系统具体将该文件(目录)或者程序放在哪个位置,只需要在程序中通过变量来访问,有些变量可能随着你的操作如,我们在shell程序中切换目录会改变PWD和OLDPWD变量的值。
对于某些程序如:CMAKE MAKE和VSCODE为了方便用户对文件(目录)的选中,还会设置若干该程序独有的环境变量,如VSCODE的$currentWorkspaceFolder$
,CMake的CMakelists.txt所在目录$PROJECT_SOURCE_DIR$
。对于编译而言,一切内置变量是为了帮助我们完成编译等任务所需要的一些常见变量。
一般这些运行在shell的程序还可以通过调用环境变量,之所以需要这个环境变量,这是因为为了获取当前编译与所处的系统环境的关系。如VSCODE则可以通过语法$env:Name$
来访问系统的环境变量;CMake也有类似语法:$ENV{NAME})
。VSCODE详细内部变量可以在这里查看:https://code.visualstudio.com/docs/editor/variables-reference