ํ์ฌ Linux์์ VS Code ์ฉ LLDB ์ง์์ด ๋ถ์กฑํฉ๋๋ค. ๋ถ๋ช ํ ์๋ํ์ง ์์ต๋๋ค.
vscode-cpptools๋ฅผ ์ฌ์ฉํ์ฌ Linux์์ Clang์ ์์ํ๋ ๋ฐฉ๋ฒ์ ๋ํ ๊ณต์ ๋ฌธ์๋ ์์ต๋๋ค.
Linux์์ Clang / LLDB์ ๋ํ ๊ณต์ ์ง์์ ์ถ๊ฐํ๋ฉด ์ ๋ง ๋ฉ์ง ๊ฒ์ ๋๋ค. LLVM์ ํฌ๋ก์ค ํ๋ซํผ ํน์ฑ ๋๋ถ์ Windows๋ก ํ์ฅํ๋ ๊ฒ๋ ์ข์ ๊ฒ์ ๋๋ค.
์, https://code.visualstudio.com/docs/cpp/config-clang-mac (Mac ์ฐธ์กฐ๊ฐ Linux๋ก ๋ณ๊ฒฝ๋จ) ๋ฐ https://code.visualstudio.com/docs/ ์ ์ฝค๋ณด๊ฐ ๋ ๊ฒ์ ๋๋ค. @WardenGnaw ๊ฐ ์ ๊ฒ์ ๋๋ค).
LLDB ๋๋ฒ๊น
์ด Linux์์ ์๋ํ๋ ค๋ฉด lldb-mi
์คํ ํ์ผ์ด ํ์ํฉ๋๋ค.
๊ทธ๋ฐ ๋ค์ launch.json
๊ตฌ์ฑ์ ๋ค์์ผ๋ก ์์ ํด์ผํฉ๋๋ค.
{
...
"miDebuggerPath": "path/to/lldb-mi".
"miMode": ''lldb"
}
@ sean-mcmanus์๊ฒ ๊ฐ์ฌ๋๋ฆฝ๋๋ค.
์๋ ํ์ธ์ @WardenGnaw , ์ด์ ์ ๋ง๊ฐ ๋ ํฐ์ผ์์ ์ธ๊ธ ํ ๊ฒ์ ๋ฐ๊ฒฌํ์ต๋๋ค. ๊ทธ๋ฌ๋ ๋๋ ๋ด ์ปดํจํฐ์์ ๊ทธ ์์ ์ ์ํํ์ง ๋ชปํ์ต๋๋ค.
/usr/bin/
์์ lldb-mi
ํ์ผ์ ์ฐพ์์ง๋ง "miDebuggerPath": "usr/bin/lldb-mi"
์ฌ์ฉํ์ฌ ๋์์ ์ง์ ํ ๋ ์๋ํ์ง ๋ชปํ์ต๋๋ค. lldb-mi-10
๋ฅผ) ์ฐพ์ ์ ์๋ค๋ ์ ์ด ์์ต๋๊น?
๋ฒจ์ด ์ธ๋ฆฌ๋์?
์ค, ์ฐ๋ถํฌ ์ชฝ์ ๋ฒ๊ทธ๋ผ๊ณ ์๊ฐํฉ๋๋ค https://bugs.launchpad.net/ubuntu/+source/llvm-toolchain-10/+bug/1872387
์ฐ๋ถํฌ 20.04์ ํจํค์ง ์์ด ๋ฒ๋ฆฐ ๊ฒ ๋๋ฌธ์ lldb-mi-10
์ lldb
๋ด๊ฐ ์ฌ์ฉ ์๋ "miDebuggerPath": "usr/bin/lldb-mi-9"
์ค์น ํ ํ lldb-9
ํ์ง๋ง ์๋ฌด ์์ฉ์.
@WardenGnaw "miDebuggerPath": "usr/bin/lldb-mi-9"
์๋ํ๋์ง ํ์ธํ ์ ์์ต๋๊น? ๋๋ฒ๊น
์ด ์๋ํ๋ ค๋ฉด ๊ตฌ์ฒด์ ์ผ๋ก "miDebuggerPath": "usr/bin/lldb-mi"
์ด์ด์ผํฉ๋๊น?
ํน๋ณํ "usr / bin / lldb-mi"์ผ ํ์๋ ์์ผ๋ฉฐ mi ์ธํฐํ์ด์ค๋ฅผ ์ฌ์ฉํ๋ ์ ํจํ ๋๋ฒ๊ฑฐ๋ฅผ ๊ฐ๋ฆฌ์ผ ์ผํฉ๋๋ค.
ํ
์คํธํ๋ ํ ๊ฐ์ง ๋ฐฉ๋ฒ์ ๋ฐ์ด๋๋ฆฌ๋ฅผ ์คํํ๊ณ -interpreter-exec console "version"
์๋ตํ๋์ง ํ์ธํ๋ ๊ฒ์
๋๋ค.
@WardenGnaw ์ฐ๋ถํฌ์์ lldb-mi๊ฐ ๋ ์ด์ ์ง์ ๋ ๊ฒ ๊ฐ์ง ์์ต๋๋ค.
https://bugs.launchpad.net/ubuntu/+source/llvm-toolchain-10/+bug/1872387
์ด์ ๋ํ ํด๊ฒฐ์ฑ ์ด ์์ต๋๊น? VS Code์ ํจ๊ป lldb๋ฅผ ์ฌ์ฉํ ์ ์๋ค๋ฉด ์ ๋ง ๊ฐ์ฌํ๊ฒ ์ต๋๋ค.
ํ์ฌ๋ก์๋ VS Code์ ํจ๊ป ์ด์ ๋ฒ์ ์ lldb๋ฅผ ์ฌ์ฉํ๋ ๋ฐ ๊ตญํ๋์ด ์์ผ๋ฉฐ, ๋ถ๋ช ํ lldb-mi-9๊ฐ VS Code๋ฅผ ์ฌ์ฉํ์ฌ Ubuntu 20.04์์ ์ ๋๋ก ์๋ํ๋๋ก ํ ์ ์์์ต๋๋ค.
macOS์ ๊ฒฝ์ฐ LLDB-MI๋ฅผ ๋น๋ ํ๊ณ ํ์ฅ์์ํ ์์ฒด ์ฌ๋ณธ์ ์ ๊ณตํฉ๋๋ค. ๊ทธ๋ฌ๋ ์ฐ๋ฆฌ๋ XCode์ lldb.framework๋ฅผ ์ฌ์ฉํ์ฌ ์ ๋ฒ์ ์ด์์ ๋๋ง๋ค lldb๋ฅผ ์ ๋ฐ์ดํธํ๋ ๊ฒ์ ๋ํด ๊ฑฑ์ ํ ํ์๊ฐ ์์ต๋๋ค.
ํ ๊ฐ์ง ํด๊ฒฐ ๋ฐฉ๋ฒ์ ์์ฒด ๋ณต์ฌ๋ณธ์ ๋น๋ํ๊ณ miDebuggerPath
์์ ๊ตฌ์ฑ์ ์ง์ ํ๋ ๊ฒ์
๋๋ค. Linux์์ ์ฌ๋ณธ์ ๋น๋ํ๋ ๊ฒ์ด ํ์ฅ๊ณผ ํจ๊ป ์ค์น๋ lldb์์ ์๋ํ๋์ง ์กฐ์ฌ ํ ๊ฒ์
๋๋ค.
์
๋ฐ์ดํธ : ๋ฐฉ๊ธ Ubuntu 20.04 ์ฉ lldb-mi
๋น๋๋ฅผ ์ป์์ง๋ง ๋ง์ ๋ฐํ์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ต๋๋ค.
์ด ๋น๋๋ liblldb.so ๋ฐ lldb-server๋ฅผ ์ ๊ณตํด์ผ ํ ์ ์์ต๋๋ค.
๊ธฐ๊ณ์ ๋ํ ์๊ตฌ ์ฌํญ์ ๋ค์๊ณผ ๊ฐ์์ผํฉ๋๋ค.
_ ์์ง ์กฐ์ฌ ์ค _
Linux (Ubuntu 20.04)์ vscode์์ clang์ ์ฌ์ฉํ๋ ค๊ณ ํ ๋๋ ๋น์ทํ ์ํฉ์ ๋ง๋ฌ์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ miDebuggerPath๊ฐ ์๋ชป๋ ๊ฒฝ๋ก๋ผ๊ณ ์๋ ค์ค๋๋ค. ๊ทธ๋์ ์ค์ ๋ก ๋ฒ๊ทธ์ ๋๊น?
@zbhxlj llvm ๊ทธ๋ฃน์ llvm-toolchain-10์ผ๋ก ์์ํ๋ lldb-mi
ํ์ง ์๊ธฐ๋ก ๊ฒฐ์ ํ์ต๋๋ค.
clang ๋ฐ lldb๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด ์ฌ์ฉ์๊ฐ ์์ค์์ lldb-mi ๋ฅผ ๋น๋ํ๊ณ miDebuggerPath
์์ ๋น๋ ๋ lldb-mi
๋ฐ์ด๋๋ฆฌ๋ฅผ ๊ฐ๋ฆฌ์ผ ์ผํฉ๋๋ค.
@WardenGnaw ๋ ํ์ด์ฌ์ด๋ ์ ์ฃผ์์ด ์ปดํ์ผ ํ ์ ์์ผ๋ฉฐ ์ต์ ์๊ตฌ ์ฌํญ์ ์ถฉ์กฑํ๋์ง ํ์ธํ ์ ์์ต๋๋ค.
clang์ ๊ดํด์๋ LLDB-MI์ ํจ๊ป ์ฌ์ฉํ๊ธฐ ์ํด clang์ด ์กด์ฌํ๋ค๊ณ ๊ฐ์ ํ๋ ๊ฒ์ด ๋ถ๋นํ๋ค๊ณ ์๊ฐํ์ง ์์ต๋๋ค.
์ข์, ๋ค์ ํ ๋ฒ ํ ์คํธํ๊ณ Ubuntu 18.04์์ ์๋ํ๋๋กํ์ต๋๋ค.
๋ฐฉ๋ฒ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
apt
๋ฅผ ํตํด ๋ค์ ํจํค์ง๋ฅผ ์ค์นํฉ๋๋ค.sudo apt install clang-10 llvm-10-dev liblldb-10-dev
sudo ln -s /usr/bin/clang-10 /usr/bin/clang
sudo ln -s /usr/bin/clang++-10 /usr/bin/clang++
sudo ln -s /usr/bin/lldb-10 /usr/bin/lldb
# This one is a bit strange but VSCode only looks for the name `lldb-server-10.0.0` but not `lldb-server-10`
sudo ln -s /usr/bin/lldb-server-10 /usr/bin/lldb-server-10.0.0
lldb-mi
์คํ ํ์ผ ๋น๋git clone https://github.com/lldb-tools/lldb-mi.git
cd lldb-mi
cmake .
cmake --build .
sudo cp src/lldb-mi /usr/bin/
์ด๊ฒ๋ค์ด๋์ด์ผํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ฌ๊ธฐ ๋ด launch.json
์
๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก clang++
์ฌ์ ์ค์ ์ ๊ธฐ๋ณธ ์ค์ ์ด๋ฉฐ ์ฌ๋ฐ๋ฅด๊ฒ ๊ธฐ์ตํ๋ฉด ์๋ฌด๊ฒ๋ ๋ณ๊ฒฝํ์ง ์์์ต๋๋ค.
{
// 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": "clang++ - Build and debug active file",
"type": "cppdbg",
"request": "launch",
"program": "${fileDirname}/${fileBasenameNoExtension}",
"args": [],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [],
"externalConsole": false,
"MIMode": "lldb",
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
],
"preLaunchTask": "C/C++: clang++ build active file",
"miDebuggerPath": "/usr/bin/lldb-mi"
}
]
}
@WardenGnaw ์๋ํด ๋ณผ ์ ์์ต๋๋ค.
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
์ข์, ๋ค์ ํ ๋ฒ ํ ์คํธํ๊ณ Ubuntu 18.04์์ ์๋ํ๋๋กํ์ต๋๋ค.
๋ฐฉ๋ฒ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
apt
๋ฅผ ํตํด ๋ค์ ํจํค์ง๋ฅผ ์ค์นํฉ๋๋ค.lldb-mi
์คํ ํ์ผ ๋น๋์ด๊ฒ๋ค์ด๋์ด์ผํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ฌ๊ธฐ ๋ด
launch.json
์ ๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋กclang++
์ฌ์ ์ค์ ์ ๊ธฐ๋ณธ ์ค์ ์ด๋ฉฐ ์ฌ๋ฐ๋ฅด๊ฒ ๊ธฐ์ตํ๋ฉด ์๋ฌด๊ฒ๋ ๋ณ๊ฒฝํ์ง ์์์ต๋๋ค.@WardenGnaw ์๋ํด ๋ณผ ์ ์์ต๋๋ค.