Vscode-cpptools: Dukungan resmi untuk Clang dan LLDB di Linux

Dibuat pada 6 Mei 2020  ·  13Komentar  ·  Sumber: microsoft/vscode-cpptools

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.

Feature Request debugger docs

Komentar yang paling membantu

Oke, jadi saya sudah menguji sekali lagi dan saya berhasil melakukannya di Ubuntu 18.04.

Begini caranya:

  1. Instal paket berikut melalui apt
sudo apt install clang-10 llvm-10-dev liblldb-10-dev
  1. Buat tautan lunak untuk file yang dapat dieksekusi sehingga semuanya dapat berfungsi seperti yang diharapkan
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
  1. Buat lldb-mi dapat dieksekusi dari sumber
git 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.

Semua 13 komentar

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?

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:

  • dentang
  • libpython2.7
  • libncurses5

_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:

  1. Instal paket berikut melalui apt
sudo apt install clang-10 llvm-10-dev liblldb-10-dev
  1. Buat tautan lunak untuk file yang dapat dieksekusi sehingga semuanya dapat berfungsi seperti yang diharapkan
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
  1. Buat lldb-mi dapat dieksekusi dari sumber
git 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.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat