VS Code附加进程时Debug Console无法执行LLDB命令求助
VS Code附加C++进程后Debug Console无法执行LLDB命令问题
问题现象
在macOS上使用VS Code的cppdbg配置附加到C++进程后,断点暂停、单步执行功能正常,但Debug Console无法执行LLDB命令:
- 输入
-exec bt报错:error: invalid target, create a target using the 'target create' command - 输入
-exec info registers报错:error: 'info' is not a valid command. - 输入
-exec p this(已暂停在成员函数中)报错:error: expression failed to parse: error: <user expression 13>:1:1: invalid use of 'this' outside of a non-static member function this ^
直接启动进程的调试配置下,上述命令均可正常执行,仅附加场景出现异常。
launch.json配置
"configurations": [ { "name": "(lldb) Attach to my_program", "type": "cppdbg", "request": "attach", "program": "${workspaceFolder}/build/macos/my_program", "MIMode": "lldb" }, ... ]
环境信息
- VSCode: 1.79.2
- macOS: 13.4
- Extension CodeLLDB: 1.9.2
- LLDB: 来自Apple Xcode 14 (lldb-1403.0.17.64)
问题原因与解决方法
这是cppdbg插件在附加进程场景下,LLDB MI模式的兼容性问题——附加流程未正确将Debug Console关联到当前调试会话。
解决方案:
切换到CodeLLDB插件的附加配置
替换原有cppdbg配置为CodeLLDB的原生配置,它对LLDB的支持更完善,附加场景下能正确关联Debug Console。修改后的launch.json配置如下:"configurations": [ { "name": "Attach to my_program", "type": "lldb", "request": "attach", "program": "${workspaceFolder}/build/macos/my_program" } ]使用原生LLDB命令
切换到CodeLLDB后,Debug Console无需加-exec前缀,直接输入LLDB原生命令即可:- 查看调用栈:
bt - 查看寄存器:
register read(LLDB原生无info registers命令,对应替代命令为register read) - 打印this指针:
p this
- 查看调用栈:
验证效果
重启VS Code后重新附加进程,在断点暂停状态下输入上述命令,即可正常执行。
内容的提问来源于stack exchange,提问作者Rob N
相关产品推荐
相关产品推荐

