Oka*_*key 5 debugging compilation visual-studio-code
我注意到 Node.js 有一个调试器“自动附加”功能,如果可能的话我想使用它。但是,我不认为在重新编译程序后可以使用“自动附加”来自动启动调试器。我使用 C/C++/Fortran 使用 makefile(和类似文件)编译我的程序,因此在运行“make”后我得到一个正常的(linux)可执行文件。然后,我执行该二进制文件,并且通常希望在此之后立即对其进行调试。我已将完整的二进制路径设置为环境变量"$myprog=/home/user/my-dev/bin/myApp"。
所以我所做的就是使用“附加到进程”来运行调试,每次我都必须在下拉列表中找到正确的进程,但我每天、每小时都这样做太多次,这变得很乏味,并且想要更智能的东西,“更自动”:
我想修改我的launch.json,以便它使用例如shell命令自动提取进程ID,而不是“自动附加”(仅适用于node.js,据我所知):并且可以选择将'pgrep -x "$myprog"'其绑定到键盘-捷径。
我猜该行"processId": "${command:pickProcess}"需要修改,请参阅下面的示例配置:
{
"name": "(gdb) Attach (any)",
"type": "cppdbg",
"request": "attach",
"program": "/home/user/my-dev/bin/myApp",
"processId": "${command:pickProcess}",
"MIMode": "gdb",
"miDebuggerPath": "/usr/bin/gdb"
},
Run Code Online (Sandbox Code Playgroud)
是否可以修改该launch.json文件,以便 VS code 理解变量“processId”应该被 shell 输出替换:(pgrep -x "$myprog"显然,在每次编译和执行要调试的程序之后,这个 PID 都会发生变化)?
如果是这样,我想也可以将它绑定到键盘快捷键?有谁知道如何实现这一目标?
小智 9
是的,使用Tasks Shell 输入扩展是可以实现的。它提供了一个 vscode 命令,可以返回 shell 命令的结果。
我的工作区的相关部分如下所示。
"launch": {
"configurations": [
{
...
"processId": "${input:FindVivadoPID}",
...
}
],
"inputs": [
{
"id": "FindVivadoPID",
"type": "command",
"command": "shellCommand.execute",
"args": {
"command": "pgrep 'ecold.*lnx64.g/vivado' -f",
"description": "Select your Vivado PID",
"useFirstResult": true,
}
}
]
}
Run Code Online (Sandbox Code Playgroud)
每当我运行时Start Debugging,它都会自动查找相关进程并附加。
另请参阅使用 shell 命令作为 VSCode 任务变量值,其中更广泛地讨论了扩展。
| 归档时间: |
|
| 查看次数: |
2304 次 |
| 最近记录: |