Vscode-cpptools: الدعم الرسمي لـ Clang و LLDB على Linux

تم إنشاؤها على ٦ مايو ٢٠٢٠  ·  13تعليقات  ·  مصدر: microsoft/vscode-cpptools

لا يتوفر حاليًا دعم LLDB على Linux لـ VS Code. من الواضح أنها لا تعمل.

لا توجد وثائق رسمية حول كيفية بدء استخدام Clang على Linux باستخدام vscode-cpptools أيضًا.

ستكون إضافة دعم رسمي لـ Clang / LLDB على نظام Linux أمرًا رائعًا للغاية. سيكون توسيع ذلك إلى Windows أمرًا رائعًا أيضًا بفضل طبيعة LLVM متعددة المنصات.

Feature Request debugger docs

التعليق الأكثر فائدة

حسنًا ، لقد اختبرت مرة أخرى ولقد عملت على Ubuntu 18.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/ cpp / config-linux (مع تغيير مراجع مجلس التعاون الخليجي إلى clang). يجب أن تعمل خدمة اللغة مع clang على Linux ، وقد استخدمت gdb لتصحيح أخطاء البرامج المجمعة على نظام التشغيل Linux ، لكنني لست متأكدًا مما إذا كان تصحيح أخطاء LLDB مدعومًا على Linux كما هو الحال في نظام Mac ( WardenGnaw سيعرف).

يتطلب الحصول على تصحيح LLDB للعمل على نظام التشغيل Linux الحصول على الملف التنفيذي 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 https://bugs.launchpad.net/ubuntu/+source/llvm-toolchain-10/+bug/1872387

نظرًا لأن Ubuntu يبدو أن 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 سيتم دعمه بعد الآن على Ubuntu:

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

هل توجد حلول لهذا؟ سنكون ممتنين حقًا إذا تمكنا من استخدام lldb مع رمز VS.

كما هو الحال ، نحن مقيدون باستخدام الإصدارات القديمة من lldb مع VS Code ، ولكي أكون واضحًا ، لم أتمكن حتى من الحصول على lldb-mi-9 للعمل بشكل صحيح على Ubuntu 20.04 مع VS Code.

بالنسبة لنظام macOS ، نقوم

سيكون أحد الحلول هو إنشاء نسختك الخاصة وتوجيه تكوين التشغيل إليها باستخدام miDebuggerPath . سأحقق فيما إذا كان إنشاء نسخة على نظام التشغيل Linux يعمل مع lldb مثبت مع الامتداد.

تحديث: لقد تمكنت للتو من الحصول على إصدار lldb-mi لـ Ubuntu 20.04 ولكن واجهت مجموعة من مشكلات وقت التشغيل.

قد يتعين على هذا الإصدار شحن liblldb.so و lldb-server.
يجب أن تشتمل المتطلبات على الماكينة على:

  • قعقعة
  • libpython2.7
  • libncurses5

_لا يزال التحقيق_

لقد قابلت أيضًا موقفًا مشابهًا عندما حاولت استخدام clang في vscode على Linux (Ubuntu 20.04) وأخبرني أن miDebuggerPath مسار غير صالح. فهل هو في الواقع حشرة؟

zbhxlj قررت مجموعة llvm عدم شحن lldb-mi بدءًا من llvm-toolchain-10.

من أجل استخدام clang و lldb ، سيحتاج المستخدمون إلى إنشاء lldb-mi من مصدره والنقطة miDebuggerPath إلى الثنائي lldb-mi .

WardenGnaw يمكنك تجميعها بدون بيثون ولا لعنات ومعرفة ما إذا كان ذلك يلبي الحد الأدنى من مجموعة المتطلبات.

بالنسبة للرنجة ، لا أعتقد أنه من غير المعقول افتراض وجود الرنة للاستخدام مع LLDB-MI

حسنًا ، لقد اختبرت مرة أخرى ولقد عملت على Ubuntu 18.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 التقييمات