عميل/مكتبة Emacs لبروتوكول Debug Adaptor هو بروتوكول سلكي للاتصال بين العميل وخادم Debug. إنه مشابه لـ LSP ولكنه يوفر التكامل مع خادم تصحيح الأخطاء.
تعتبر واجهة برمجة التطبيقات (API) غير مستقرة حتى انتهاء الإصدار 1.0. تم اختباره ضد Java وPython وRuby وElixir وLLDB (C/C++/Objective-C/Swift).
نقاط الإدخال الرئيسية هي dap-debug
و dap-debug-edit-template
. يطلب الأول قالب تصحيح مسجل ويبدأ التكوين باستخدام القيم الافتراضية لهذا التكوين المحدد. يقوم الأخير بإنشاء قالب تصحيح يمكن تخصيصه قبل التشغيل. سيقوم dap-debug-edit-template
بإعداد إعلان القالب داخل مخزن مؤقت. يجب عليك تنفيذ هذا الرمز باستخدام CMx
لتطبيق التغييرات. يجب عليك أيضًا نسخ هذا الرمز في تكوين Emacs الخاص بك إذا كنت ترغب في جعله ثابتًا.
يوفر وضع dap أيضًا هيدرا مع dap-hydra
. يمكنك تشغيل الهيدرا تلقائيًا عندما يصل البرنامج إلى نقطة توقف باستخدام الكود التالي.
( add-hook 'dap-stopped-hook
( lambda ( arg ) ( call-interactively # 'dap-hydra )))
يمكنك أيضًا استخدام هذه الأداة مع خوادم تصحيح الأخطاء التي تم إرساءها: قم بتكوينها إما باستخدام ملف .dir-locals
أو قم بإسقاط ملف تكوين .lsp-docker.yml
(استخدم lsp-docker كمرجع عام). في الأساس، لديك وظيفة واحدة dap-docker-register
التي تؤدي جميع المهام الثقيلة (العثور على قالب التصحيح الأصلي، وتصحيحه، وتسجيل موفر تصحيح الأخطاء، وما إلى ذلك). تفحص هذه الوظيفة ملف تكوين أو ترجع إلى التكوين الافتراضي (الذي يمكن تصحيحه باستخدام نهج .dir-locals
، ولاحظ أن التكوين الافتراضي لا يوفر أي إعدادات افتراضية معقولة لتصحيح الأخطاء) ثم تعمل على مجموعة من الاثنان. هذه الآلية هي نفسها الموجودة في lsp-docker
.
ملاحظة: لا يمكنك حاليًا استخدام هذا الوضع عند استخدام اتصال الشبكة للاتصال بمصححات الأخطاء (لم يتم تنفيذ هذا الجزء بعد). هل ما زلت تريد التحدث إلى مصححي الأخطاء عبر الشبكة؟ من أجل القيام بذلك، عليك إلقاء نظرة على عملية تصحيح launch-args
التي تم إجراؤها بواسطة dap-docker--dockerize-start-file-args
، يجب عليك بطريقة ما تعيين nil
إلى dap-server-path
قبل أن يتم تمريره إلى مرحلة إنشاء الجلسة .
إذا كنت تريد الالتزام بملف التكوين، فقم بإلقاء نظرة على المثال أدناه:
lsp :
server :
# 'lsp-docker' fields
mappings :
- source : " /your/host/source/path " # used both by 'lsp-docker' and 'dap-docker'
destination : " /your/local/path/inside/a/container " # used both by 'lsp-docker' and 'dap-docker'
debug :
type : docker # only docker is supported
subtype : image # or 'container'
name : <docker image or container that has the debugger in> # you can omit this field
# in this case the 'lsp-docker' ('server' section) image name is used
enabled : true # you can explicitly disable 'dap-docker' by using 'false'
provider : <your default language debug provider, double quoted string>
template : <your default language debug template, double quoted string>
launch_command : <an explicit command if you want to override a default one provided by the debug provider>
# e.g. if you have installed a debug server in a different directory, not used with 'container' subtype debuggers