개요

이 문서는 Vscode를 사용하면서 유용한 팁들을 작성한다.

Clangd

Linux처럼 큰 프로젝트의 경우에는 내장 C/C++ Intellisence가 Tag parsing을 매우 느리게하는데, 이를 해결하기 위해서 clangd를 사용하면 좋다. vscode clangd extension 설치후, cmake -DCMAKE_EXPORT_COMPILE_COMMANDS=1 . 혹은 리눅스 커널 소스 파일의 ./scripts/clang-tools/gen_compile_commands.py를 사용해주면, clangd가 사용할 .json파일을 만들어 주고 이를 통해서 사용하면 된다.

  • 이떄 C/C++ Extension이랑 같이 사용하기 위해서 "C_Cpp.autocomplete": "Disabled", "C_Cpp.intelliSenseEngine": "Disabled"로 설정해주어야 한다.

Linux Kernel Debugging

내장 Debugger를 통해서 Linux kernel를 보다 쉽게 디버깅 할 수도 있다. 이를 위해서 launch.json을 다음과 같이 해준다.

{
    // Use IntelliSense to learn about possible attributes.
    // Hover to view descriptions of existing attributes.
    // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "name": "kernel-debug",
            "type": "cppdbg",
            "request": "launch",
            "miDebuggerServerAddress": "localhost:1234",
            "program": "${workspaceFolder}/vmlinux",
            "stopAtEntry": true,
            "cwd": "${workspaceFolder}",
            "MIMode": "gdb",
        }
    ]
}
  • 만약 프로젝트가 사용하는 .gdbinit과 겹치는 설정이 있으면, gdb가 설정을 2번 로딩하면서 튕김으로, .gdbinit을 삭제하거나 중복되는 내용을 지우도록 한다.


참고

  1. https://80000coding.oopy.io/6e809d3a-dea5-40f3-9c72-de454a9d3632