ไคลเอนต์/ไลบรารี Emacs สำหรับ Debug Adapter Protocol เป็นโปรโตคอลแบบใช้สายสำหรับการสื่อสารระหว่างไคลเอนต์และเซิร์ฟเวอร์ 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-mode ยังให้ไฮดราด้วย 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