Vscode-cpptools: LinuxでのClangとLLDBの公式サポート

作成日 2020年05月06日  ·  13コメント  ·  ソース: microsoft/vscode-cpptools

現在、Linux for VSCodeでのLLDBサポートが不足しています。 それは明らかに機能しません。

vscode-cpptoolsを使用してLinuxでClangを使い始める方法に関する公式ドキュメントもありません。

LinuxでClang / LLDBの公式サポートを追加することは、絶対に素晴らしいことです。 LLVMのクロスプラットフォームの性質のおかげで、それをWindowsに拡張することも素晴らしいでしょう。

Feature Request debugger docs

最も参考になるコメント

さて、もう一度テストして、Ubuntu18.04で動作するようにしました。

方法は次のとおりです。

  1. apt介して次のパッケージをインストールします
sudo apt install clang-10 llvm-10-dev liblldb-10-dev
  1. 実行可能ファイルのソフトリンクを作成して、期待どおりに機能するようにします
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. ソースから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試してみてください。

全てのコメント13件

ええ、それはhttps://code.visualstudio.com/docs/cpp/config-clang-mac(Macの参照はLinuxに変更されています)とhttps://code.visualstudio.com/docs/の組み合わせのようなものですわかりません(

LinuxでLLDBデバッグを機能させるには、 lldb-mi実行可能ファイルを取得する必要があります。

それができたら、次のようにlaunch.json構成を変更する必要があります。

{
...
"miDebuggerPath": "path/to/lldb-mi".
"miMode": ''lldb"
}

@ sean-mcmanusに感謝します。

ねえ@WardenGnaw 、あなたが古いクローズドチケットでそれを言っているのに気づきました。 しかし、私は自分のマシンでそれを機能させることができませんでした。

私が見つけたlldb-miでファイルを/usr/bin/が、私は使用してそれをターゲットするときそれを動作させることができなかった"miDebuggerPath": "usr/bin/lldb-mi"lldb-mi-10を見つけることができないことについて何か?

それはベルを鳴らしますか?

Ubuntu 20.04はlldb-mi-10lldbと一緒にパッケージ化するのを忘れているようですので、 lldb-9インストールした後に"miDebuggerPath": "usr/bin/lldb-mi-9"を使用しようとしましたが、役に立ちませんでした。

@WardenGnawは、 "miDebuggerPath": "usr/bin/lldb-mi-9"機能するかどうかを確認できますか? デバッグを機能させるには、具体的に"miDebuggerPath": "usr/bin/lldb-mi"である必要がありますか?

特に「usr / bin / lldb-mi」である必要はなく、miインターフェースを使用する有効なデバッガーを指す必要があります。

テストする1つの方法は、バイナリを実行して、 -interpreter-exec console "version"に応答するかどうかを確認することです。

@ WardenGnawlldb-miがUbuntuでサポートされなくなるようです。

https://bugs.launchpad.net/ubuntu/+source/llvm-toolchain-10/+bug/1872387

これに対する解決策はありますか? VSCodeでlldbを使用できれば本当にありがたいです。

現状では、VS Codeで古いバージョンのlldbを使用することに限定されており、明確にするために、VSCodeを使用するUbuntu20.04でlldb-mi-9を正しく動作させることさえできませんでした。

macOSの場合、 LLDB-MI出荷します。 ただし、XCodeのlldb.frameworkを使用して、新しいバージョンがあるたびにlldbを更新することを心配する必要はありません。

回避策の1つは、独自のコピーを作成し、 miDebuggerPath使用して起動構成をそのコピーにポイントすることです。 Linuxでコピーをビルドすることが、拡張子が付いたインストール済みのlldbで機能するかどうかを調査します。

更新:Ubuntu 20.04用にlldb-miビルドを取得しましたが、ランタイムの問題がたくさん発生しました。

このビルドでは、liblldb.soとlldb-serverを出荷する必要がある場合があります。
マチルの要件は次のとおりです。

  • clang
  • libpython2.7
  • libncurses5

_まだ調査中_

Linux(Ubuntu 20.04)のvscodeでclangを使用しようとしたときにも同様の状況が発生し、miDebuggerPathが無効なパスであることがわかりました。 それで、それは実際にはバグですか?

@zbhxlj llvmグループは、llvm-toolchain-10以降でlldb-miを出荷しないことを決定しました。

clangとlldbを使用するには、ユーザーはソースからlldb-miをビルドし、ビルドされたlldb-miバイナリをmiDebuggerPathにポイントする必要があります。

@WardenGnawは、Pythonや呪いなしでコンパイルし、それが要件の最小セットを満たしているかどうかを確認できます。

clangに関しては、LLDB-MIで使用するためにclangが存在すると考えるのは無理ではないと思います。

さて、もう一度テストして、Ubuntu18.04で動作するようにしました。

方法は次のとおりです。

  1. apt介して次のパッケージをインストールします
sudo apt install clang-10 llvm-10-dev liblldb-10-dev
  1. 実行可能ファイルのソフトリンクを作成して、期待どおりに機能するようにします
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. ソースから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試してみてください。

このページは役に立ちましたか?
0 / 5 - 0 評価