디버그 어댑터 프로토콜용 Emacs 클라이언트/라이브러리는 클라이언트와 디버그 서버 간의 통신을 위한 유선 프로토콜입니다. 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
와 함께 hydra도 제공합니다. 다음 코드를 사용하면 프로그램이 중단점에 도달할 때 자동으로 hydra를 트리거할 수 있습니다.
( add-hook 'dap-stopped-hook
( lambda ( arg ) ( call-interactively # 'dap-hydra )))
Docker화된 디버그 서버와 함께 이 도구를 사용할 수도 있습니다. .dir-locals
파일로 구성하거나 .lsp-docker.yml
구성 파일을 삭제합니다(일반 참조를 위해 lsp-docker 사용). 기본적으로 모든 무거운 작업(원본 디버그 템플릿 찾기, 패치 적용, 디버그 공급자 등록 등)을 수행하는 하나의 함수 dap-docker-register
있습니다. 이 함수는 구성 파일을 검사하거나 기본 구성( .dir-locals
접근 방식을 사용하여 패치할 수 있음, 기본 구성은 디버깅을 위한 정상적인 기본값을 제공하지 않는다는 점에 유의)으로 대체한 다음 다음 조합에서 작동합니다. 둘. 이 메커니즘은 lsp-docker
와 동일합니다.
참고: 현재 네트워크 연결을 사용하여 디버거에 연결할 때는 이 모드를 사용할 수 없습니다(이 부분은 아직 구현되지 않았습니다). 아직도 네트워크를 통해 디버거와 통신하고 싶으십니까? 그렇게 하려면 dap-docker--dockerize-start-file-args
에 의해 수행된 launch-args
패치를 살펴봐야 합니다. 세션 생성에 추가로 전달되기 전에 dap-server-path
에 nil
할당해야 합니다. .
구성 파일을 유지하려면 아래 예를 살펴보십시오.
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