【发布时间】:2021-11-02 12:21:55
【问题描述】:
我正在使用 Vagrant 启动一个 Ubuntu 虚拟机并在 Linux 中编译我的 C++ 代码。 Linux 版本为5.8.0-59-generic。
makefile 构建命令是exec: main.o other_lib.o ${CXX} ${CXX_FLAGS} -lc++abi bin/main.o bin/other_lib.o -o bin/exec -g -fstandalone-debug。运行make exec和./bin/exec后,程序可以成功运行。但是调试部分有问题。这是 LLDB 的 launch.json 配置:
{
"name": "debug exec lldb",
"type": "cppdbg",
"request": "launch",
"program": "/home/vagrant/bin/exec",
"stopAtEntry": true,
"cwd": "${workspaceFolder}",
"environment": [],
"externalConsole": false,
"MIMode": "lldb",
"miDebuggerPath": "/usr/bin/lldb-mi",
"preLaunchTask": "debug exec",
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
},
{
"text": "settings set target.run-args ${input:lldb-debugger-args}"
}
]
}
我第一次使用F5 运行此调试配置时,vscode 提示miDebuggerPath invalid。发现系统中没有/usr/bin/lldb-mi的可执行文件,于是跑了sudo apt-get install lldb。这就是事情变得奇怪的地方:
-
我尝试通过VSCode运行调试过程,没有出现
miDebuggerPath invalid错误。但是,在点击F5后,终端将输出[1] + Done(127) "/usr/bin/lldb-mi" --interpreter=mi --tty=${DbgTerm} 0<"/tmp/Microsoft-MIEngine-In-ly4ql3cx.s1b" 1>"/tmp/Microsoft-MIEngine-Out-gfkz1mbe.fex"并打印一个新的提示以侦听下一个命令。出现了 VSCode 的悬停调试工具栏,但有一个不断运行的进度条(见下文)。整个调试过程卡住了。 -
在
/usr/bin/中使用ls,lldb-mi文件显示为红色。使用ls -l /usr/bin/lldb-mi表示是断链,指向另一个断链lldb-mi-11: -
/usr/bin/lldb是一个现有的可执行文件。但是lldb-mi似乎是lldb的“机器接口”,我不确定使用lldb作为miDebugger是否可以工作。
我该如何解决这个问题(找到lldb-mi 的替代品或以某种方式解决lldb-mi 的链接断开问题)?
【问题讨论】:
标签: c++ linux ubuntu visual-studio-code lldb