개요
이 문서는 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을 삭제하거나 중복되는 내용을 지우도록 한다.