Did you know ... Search Documentation:
Pack debug_adapter -- prolog/debug_adapter/server.pl
PublicShow source

This module contains the core logic for handling DAP requests sent by DAP clients which are most commonly IDE extensions controlled interactivly by a progammer. The main entry point is da_server/1.

The implementation is most dominently guided by the DAP specification.

 da_server(+Options) is det
Starts the DAP server in the current thread. Options:
Stream will be used by the server to read incoming messages from the client. Defaults to user_input.
Stream will be used by the server to emit outgoing messages to the client. Defaults to user_output.
Setup will be called just before entering the main DAP server loop. Defaults to true.
OnCommand is a closure of arity 6 which will be called during the DAP session loop to handle incoming DAP request, like so:
call(OnCommand, +Command, +Arguments, +RequestSeq, +Handle, +State0, -State)


  • Command is an atom identyfing the type of the DAP request, e.g. stepIn.
  • Arguments is either the atom null or a dict containing Command -specific parameters.
  • RequestSeq is an integer identifying the received request in the scope of the current session.
  • Handle can be used to with the predicates from module da_sdk to communicate DAP messages (including the response for the handled command) back to the client.
  • State0 and State can be used to pass arbitrary terms between invocations of OnCommand during the course of a DAP session. The session loop will initially call OnCommand with State0 bound to an initial state term determined by the initial_state option of this predicate, in the next invocation State0 will be bound to the State argument of the prior invocation, and so forth.
Cleanup will be called after the main DAP server loop completes. Defaults to true.
State will be used as the initial state argument passed to OnCommand. Defaults to [].