Saat ini dukungan LLDB di Linux untuk VS Code masih kurang. Jelas itu tidak berhasil.
Tidak ada dokumentasi resmi tentang cara memulai Clang di Linux menggunakan vscode-cpptools.
Menambahkan dukungan resmi untuk Clang / LLDB di Linux akan sangat luar biasa. Memperluasnya ke Windows akan sangat bagus juga berkat sifat lintas platform LLVM.
Ya, itu akan seperti kombinasi dari https://code.visualstudio.com/docs/cpp/config-clang-mac (dengan referensi Mac berubah ke Linux) dan https://code.visualstudio.com/docs/ cpp / config-linux (dengan referensi gcc diubah menjadi clang). Layanan bahasa harus bekerja dengan clang di Linux, dan saya telah menggunakan gdb untuk men-debug program yang dikompilasi clang di Linux, tetapi saya tidak yakin apakah debugging LLDB didukung di Linux seperti di Mac ( @WardenGnaw akan tahu).
Membuat debugging LLDB bekerja di linux akan membutuhkan eksekusi lldb-mi
.
Setelah Anda memilikinya, maka Anda perlu mengubah konfigurasi launch.json
dengan:
{
...
"miDebuggerPath": "path/to/lldb-mi".
"miMode": ''lldb"
}
Terima kasih @ sean-mcmanus.
Hai @WardenGnaw , saya perhatikan Anda menyebutkannya di tiket tertutup yang lebih lama. Tapi saya tidak pernah berhasil membuatnya bekerja di mesin saya.
Saya telah menemukan file lldb-mi
di /usr/bin/
tetapi tidak dapat membuatnya bekerja ketika saya menargetkannya menggunakan "miDebuggerPath": "usr/bin/lldb-mi"
. Sesuatu tentang tidak dapat menemukan lldb-mi-10
?
Apakah itu membunyikan bel?
Oh, saya pikir itu bug di sisi Ubuntu https://bugs.launchpad.net/ubuntu/+source/llvm-toolchain-10/+bug/1872387
Karena Ubuntu 20.04 sepertinya lupa mengemas lldb-mi-10
dengan lldb
Saya mencoba menggunakan "miDebuggerPath": "usr/bin/lldb-mi-9"
setelah menginstal lldb-9
, tetapi tidak berhasil.
@WardenGnaw dapatkah Anda mengonfirmasi jika "miDebuggerPath": "usr/bin/lldb-mi-9"
bekerja untuk Anda? Apakah harus secara khusus "miDebuggerPath": "usr/bin/lldb-mi"
agar debugging berfungsi?
Ini tidak harus secara khusus "usr / bin / lldb-mi", itu hanya harus menunjuk ke debugger valid yang menggunakan antarmuka mi.
Salah satu cara untuk mengujinya adalah dengan menjalankan biner dan melihat apakah ia merespons -interpreter-exec console "version"
@WardenGnaw sepertinya lldb-mi tidak akan didukung lagi di Ubuntu:
https://bugs.launchpad.net/ubuntu/+source/llvm-toolchain-10/+bug/1872387
Apakah ada solusi untuk ini? Akan sangat dihargai jika kita dapat menggunakan lldb dengan VS Code.
Karena berdiri kami dibatasi untuk menggunakan versi lama lldb dengan VS Code, dan untuk memperjelas saya bahkan tidak bisa mendapatkan lldb-mi-9 untuk bekerja dengan baik di Ubuntu 20.04 dengan VS Code.
Untuk macOS, kami membuat LLDB-MI dan mengirimkan salinan kami sendiri untuk ekstensi tersebut. Namun, kami menggunakan lldb.framework dari XCode untuk tidak perlu khawatir tentang memperbarui lldb setiap kali ada versi baru.
Salah satu solusinya adalah membuat salinan Anda sendiri dan mengarahkan konfigurasi peluncuran Anda ke sana dengan miDebuggerPath
. Saya akan menyelidiki apakah membuat salinan di linux berfungsi dengan lldb yang terpasang dengan ekstensi.
Pembaruan: Saya baru saja mendapatkan build lldb-mi
untuk Ubuntu 20.04 tetapi mengalami banyak masalah runtime.
Build ini mungkin harus mengirimkan liblldb.so dan lldb-server.
Persyaratan pada machile harus memiliki:
_Masih menyelidiki_
Saya juga bertemu situasi serupa ketika saya mencoba menggunakan dentang di vscode di Linux (Ubuntu 20.04) Dan itu memberi tahu saya bahwa miDebuggerPath adalah jalur yang tidak valid. Jadi apakah ini benar-benar bug?
@zbhxlj Grup llvm telah memutuskan untuk tidak mengirimkan lldb-mi
dimulai dengan llvm-toolchain-10.
Untuk menggunakan clang dan lldb, pengguna perlu membangun lldb-mi dari sumbernya dan mengarahkan miDebuggerPath
ke biner lldb-mi
.
@WardenGnaw Anda dapat mengkompilasi tanpa python dan tanpa kutukan dan melihat apakah itu memenuhi persyaratan minimum.
Mengenai dentang, menurut saya tidak masuk akal untuk menganggap bahwa dentang ada untuk digunakan dengan LLDB-MI
Oke, jadi saya sudah menguji sekali lagi dan saya berhasil melakukannya di Ubuntu 18.04.
Begini caranya:
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
dapat dieksekusi dari sumbergit clone https://github.com/lldb-tools/lldb-mi.git
cd lldb-mi
cmake .
cmake --build .
sudo cp src/lldb-mi /usr/bin/
Ini harusnya. Dan inilah launch.json
. Pada dasarnya hanya yang default dari clang++
preset dan tidak mengubah apa pun jika saya mengingatnya dengan benar.
{
// 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 Anda mungkin ingin mencobanya.
Komentar yang paling membantu
Oke, jadi saya sudah menguji sekali lagi dan saya berhasil melakukannya di Ubuntu 18.04.
Begini caranya:
apt
lldb-mi
dapat dieksekusi dari sumberIni harusnya. Dan inilah
launch.json
. Pada dasarnya hanya yang default dariclang++
preset dan tidak mengubah apa pun jika saya mengingatnya dengan benar.@WardenGnaw Anda mungkin ingin mencobanya.