状況
CodeLLDBを用いてC++のデバッグを行う際に、下の画像のようにSTLの中身がうまく表示されない。
環境
- macOS BigSur 11.6
- lldb 1205.0.27.3
- gcc (g++) 11.2.0
- VS Code
tasks.json
{
"version": "2.0.0",
"tasks": [
{
"label": "Build C++17 for Debug",
"type": "shell",
"command": "g++",
"args": [
"-std=c++17",
"-g",
"${file}",
"-o",
"${fileDirname}/debug",
],
"group": {
"kind": "build",
"isDefault": true
}
}
]
}
launch.json
{
"version": "0.2.0",
"configurations": [
{
"type": "lldb",
"request": "launch",
"name": "codeLLDB Debug",
"program": "${fileDirname}/debug",
"args": [],
"cwd": "${workspaceFolder}",
"externalConsole": true,
"preLaunchTask": "Build C++17 for Debug",
}
]
}
原因
※正しい原因ではない可能性があります。
LLDBが対応しているデバッグファイルフォーマットがうまく生成されていない?
LLDBの対応フォーマット
デバッグオプションごとの生成フォーマット
対処
コンパイラオプションに明示的にレベル3のdwarfフォーマットを指定する。
変更後のtasks.json
{
"version": "2.0.0",
"tasks": [
{
"label": "Build C++17 for Debug",
"type": "shell",
"command": "g++",
"args": [
"-std=c++17",
"-gdwarf-3",
"${file}",
"-o",
"${fileDirname}/debug",
],
"group": {
"kind": "build",
"isDefault": true
}
}
]
}
参考
Why lldb pretty printers doesn't work for GNU GCC compiled program on MacOS?