CodeLLDB에서 STL 내용이 표시되지 않을 때의 해결 방법

8233 단어 C++LLDBVSCode

상황



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
          }
        }
      ]
    }
    

    변경 후, 아래와 같이 STL의 내용이 표시되게 되었다.


    참고



    Why lldb pretty printers doesn't work for GNU GCC compiled program on MacOS?

    좋은 웹페이지 즐겨찾기