This library provides utilities that are primarily intended for
interactive usage in a threaded Prolog environment. It allows for
inspecting threads, manage I/O of background threads (depending on the
environment) and manipulating the debug status of threads.
- threads
- List currently known threads with their status.
- join_threads
- Join all terminated threads.
- with_stopped_threads(:Goal, Options) is det
- Stop all threads except the caller while running
once(Goal)
. Note
that this is in the thread user utilities as this is not something
that should be used by normal applications. Notably, this may
deadlock if the current thread requires input from some other
thread to complete Goal or one of the stopped threads has a lock.
Options:
- stop_nodebug_threads(+Boolean)
- If
true
(default false
), also stop threads created with
the debug(false)
option.
- except(+List)
- Do not stop threads from this list.
- bug
- - Note that the threads are stopped when they process signals. As
signal handling may be delayed, this implies they need not be
stopped before Goal starts.
- thread_has_console is semidet
- True when the calling thread has an attached console.
- See also
- - attach_console/0
- xterm_args(-List) is nondet[multifile]
- Multifile and dynamic hook that provides (additional) arguments for
the
xterm(1)
process opened for additional thread consoles. Each
solution must bind List to a list of atomic values. All solutions
are concatenated using append/2 to form the final argument list.
The defaults set the colors to black-on-light-yellow, enable a
scrollbar, set the font using Xft font pattern and prepares the
back-arrow key.
- attach_console is det
- attach_console(?Title) is det
- Create a new console and make the standard Prolog streams point to
it. If not provided, the title is built using the thread id. Does
nothing if the current thread already has a console attached.
- interactor is det
- interactor(?Title) is det
- Run a Prolog toplevel in another thread with a new console window.
If Title is given, this will be used as the window title.
- thread_run_interactor
- Attach a console and run a Prolog toplevel in the current thread.
- tspy(:Spec) is det
- tspy(:Spec, +ThreadId) is det
- Trap the graphical debugger on reaching Spec in the specified or
any thread.
- tdebug is det
- tdebug(+Thread) is det
- Enable debug-mode, trapping the graphical debugger on reaching
spy-points or errors.
- tnodebug is det
- tnodebug(+Thread) is det
- Disable debug-mode in all threads or the specified Thread.
- tbacktrace(+Thread) is det
- tbacktrace(+Thread, +Options) is det
- Print a backtrace for Thread to the stream
user_error
of the
calling thread. This is achieved by inserting an interrupt into
Thread using call_in_thread/2. Options:
- depth(+MaxFrames)
- Number of stack frames to show. Default is the current Prolog
flag
backtrace_depth
or 20.
Other options are passed to get_prolog_backtrace/3.
- bug
- - call_in_thread/2 may not process the event.
- tprofile(+Thread) is det
- Profile the operation of Thread until the user hits a key.
Re-exported predicates
The following predicates are exported from this file while their implementation is defined in imported modules or non-module files loaded by this module.
- attach_console is det
- attach_console(?Title) is det
- Create a new console and make the standard Prolog streams point to
it. If not provided, the title is built using the thread id. Does
nothing if the current thread already has a console attached.
- interactor is det
- interactor(?Title) is det
- Run a Prolog toplevel in another thread with a new console window.
If Title is given, this will be used as the window title.
- tspy(:Spec) is det
- tspy(:Spec, +ThreadId) is det
- Trap the graphical debugger on reaching Spec in the specified or
any thread.
- tdebug is det
- tdebug(+Thread) is det
- Enable debug-mode, trapping the graphical debugger on reaching
spy-points or errors.
- tnodebug is det
- tnodebug(+Thread) is det
- Disable debug-mode in all threads or the specified Thread.
- tbacktrace(+Thread) is det
- tbacktrace(+Thread, +Options) is det
- Print a backtrace for Thread to the stream
user_error
of the
calling thread. This is achieved by inserting an interrupt into
Thread using call_in_thread/2. Options:
- depth(+MaxFrames)
- Number of stack frames to show. Default is the current Prolog
flag
backtrace_depth
or 20.
Other options are passed to get_prolog_backtrace/3.
- bug
- - call_in_thread/2 may not process the event.