vscode cmake-tools launching.json 使用文档(垃圾翻译)

原文

cmake 调试与启动(Debugging and launching)

cmake tools移除了一系列配置debugging的复杂操作
因为c和c++项目可能定义有多个可执行文件
创建launch.json可能会变得很困难,繁杂,且容易出错

如果你通过cmake定义了一个可执行对象,cmake工具
将会解析他们,并允许你对他们进行调试

注意 调试只支持cmake服务模式,该模式在3.7.2以上版本的cmake中会自动打开,但在老的版本中是没有任何效果的,对象调试在之前的版本中是支持的,但是很难用,而且容易出错,创造的问题远比解决的多,如果你使用的是老版本的cmake并且想使用对象调试,你必须升级你的cmake版本

默认情况下,在启动(launch)或调试(debug)可执行文件时,会触发build

当然可以关闭该设置,详细看cmake.buildBeforRun

选择启动对象

启动对象和调试对象一开始都是没有设置的
如果你第一次尝试调试一个对象,cmake将会提示你选择调试的目标,并且将对话持久化
在这里插入图片描述
点击这个按钮将会显示可启动对象
以及让我们更改启动对象

快速调试(debugging)

快速调试,可以让你启动对象的调试功能,而不用创建launch.json

注意:现在只有mircosoft的vscode-cpptools插件,支持快速调试,如果想了解如何使用launch.json和其他调试方法,可以看下面的"使用cmake-tools和launch.json调试"

快速调试可以使用命令面板中的CMake: Debug目标命令,或者通过按相关的热键来启动(默认是ctrl+F5)

注意:快速调试不允许指定程序参数或其他调试选项,想了解更多选择可以看 “使用cmake-tools和launch.json调试”

使用cmake-tools和launch.json调试

有时,调试的需求会更加复杂,比如设置工作目录,提供命令行参数,也有人可能会想用其他调试器,而不是用mocrosoft的vscode-cpptools所包含的

所有的这些需求,都可以使用launch.json来解决,
使用launch.json的最大困难是事先指定可执行文件的路径,
cmake Tools可以在launch.json通过命令替换的方式提供帮助

这适用于附加到进程时的程序选择,
它可以通过在launch.json合适的地方使用基于命令的替换,从而正常工作.

下面这是一个使用了cmake.launchTargetPath 和 cmake.launchTargetDirectory去调试启动选定对象的launch.json的小例子

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "(gdb) Launch",
            "type": "cppdbg",
            "request": "launch",
            // Resolved by CMake Tools:
            "program": "${command:cmake.launchTargetPath}",
            "args": [],
            "stopAtEntry": false,
            "cwd": "${workspaceFolder}",
            "environment": [
                {
                    // add the directory where our target was built to the PATHs
                    // it gets resolved by CMake Tools:
                    "name": "PATH",
                    "value": "$PATH:${command:cmake.launchTargetDirectory}"
                },
                {
                    "name": "OTHER_VALUE",
                    "value": "Something something"
                }
            ],
            "externalConsole": true,
            "MIMode": "gdb",
            "setupCommands": [
                {
                    "description": "Enable pretty-printing for gdb",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                }
            ]
        }
    ]
}

program属性的值通过cmake tools解析为要运行程序的绝对路径

注意:必须先成功执行配置文件,之后cmake.launchTargetPath和cmake.launchTargetDirectory才会被正确解析

运行对象而不调试

有时,只想运行对象看输出结果,这可以使用cmake:Execute the current target without a debugger 命令,或者关联热键(默认Shift+F5)

输出将会展示在集成的终端中

### 在 CLion 中调试 ESP 项目的指南 #### 配置开发环境 为了能够在 CLion 中顺利调试 ESP 项目,需要先安装并配置必要的工具链和支持库。这包括但不限于安装 ESP-IDF 工具包以及设置相应的环境变量[^1]。 ```bash # 安装 ESP-IDF 和相关依赖项 $ git clone https://github.com/espressif/esp-idf.git $ cd esp-idf $ ./install.sh ``` #### 创建新工程或导入现有工程 对于新的 ESP 项目可以直接利用 CLion 的创建向导来初始化基于 CMake 的构建系统。而对于已有项目,则可以通过 `File -> Open` 来打开对应的文件夹让 CLion 自动解析 CMakeLists.txt 文件完成导入工作。 #### 设置运行和调试配置 在成功导入项目之后,下一步就是定义好用于编译、上传固件到设备以及启动 GDB 调试会话的具体参数。这些都可以通过点击右上角的 “Edit Configurations...” 按钮来进行调整: - **Build Type**: Debug 或 Release 版本的选择取决于是否开启优化选项; - **Target Device Port**: 连接至目标板子所使用的串口路径(例如 `/dev/ttyUSB0`); - **GDB Server Command Line Options**: `-ex "target remote :9342"` 表明远程连接端口号为 9342 的服务器实例; - **Additional Setup Commands Before Launching Debugger**: 可能还需要额外指定一些预处理命令以便更好地支持特定硬件特性。 ```json { "name": "ESP32 Debug", "type": "cpp-gdb", "request": "launch", "program": "${workspaceFolder}/build/${fileBasenameNoExtension}.elf", "args": [], "stopAtEntry": false, "cwd": "${workspaceFolder}", "environment": [ { "name": "ESPTOOLPY_PORT", "value": "/dev/ttyUSB0" } ], "externalConsole": true, "MIMode": "gdb", "miDebuggerPath": "$HOME/.espressif/tools/xtensa-esp32-elf/esp-xxxxxx/xtensa-esp32-elf/bin/xtensa-esp32-elf-gdb", "setupCommands": [ { "description": "Enable pretty-printing for gdb", "text": "-enable-pretty-printing", "ignoreFailures": true }, { "description": "Connect to the target device via JTAG interface.", "text": "target extended-remote localhost:9342", "ignoreFailures": false } ] } ``` #### 开始调试过程 一切准备就绪后就可以按下绿色三角形按钮执行上述配置好的任务序列了——即依次调用 make 命令进行编译操作、借助 esptool.py 将二进制映像烧录入闪存芯片内最后再激活 GDB server 并建立双向通信链接从而实现单步跟踪断点等功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值