-
Notifications
You must be signed in to change notification settings - Fork 0
LStinson/TagmaDebug
Folders and files
| Name | Name | Last commit message | Last commit date | |
|---|---|---|---|---|
Repository files navigation
NAME
TagmaDebug - Interactive TCL Debugger
SYNOPSIS
tagmadebug.tcl [Options] [--] YourScript.tcl
OPTIONS
-c Connect to a TagmaDebug control server.
-H HOST Connect to HOST instead of localhost.
-h Display this text.
-P PORT Connect to PORT instead of 5444.
DESCRIPTION
TagmaDebug is a simple interactive debugger for TCL programs.
When TagmaDebug starts it creates a trace on "__TagmaDebugMain." This
procedure sources the script provided on the command line. The trace on
this procedure basically causes a break on every command. Once the
script completes the procedure "__TagmaDebugComplete" is called. There
is a hidden enter trace on this procedure to ensure the user gets the
debugger prompt one last time.
The unknown command is replaced and the original called. If the original
unknown throws an error it is caught. The error message is displayed and
the debugger is entered. The debugger will not step into unknown.
All output from the debugger is written to stderr. This allows for
redirection of the program or debugger output if desired.
PROMPT
The prompt is composed of flags in curly brackets '{}', the level of
execution, the procedure (if one is executing) and the name of the
debugger.
The flags indicate when certain features are enabled. 'B' indicates the
body of procedures will be displayed. If disabled only the procedure
name and arguments are printed. 'E' indicates enter will continue a
step, the same as typing 'c Enter'. 'P' indicates packages will be
stepped into. 'V' indicates verbose mode is enabled. This will cause
additional output in certain places.
Sample prompt: {E}(1 => foo)Tagma>
This prompt indicates Enter will continue a step and execution is one
level deep in the procedure "foo".
COMMANDS
There are several interactive commands that control the debugger. There
is no line editing and very little nicety.
! Executes a shell command.
= Prints the content of each variable name provided.
a or > Prints the command being executed.
c or Enter Continue execution.
e or [..] Evaluates TCL code. When using [..] The closing ']' is
required.
h or ? Prints the help text.
f or ff Prints the stack frame. ff prints also prints the line and
file, when available.
Prints the Frame #, Level # (as in info level), Procedure
name and command. The command is truncated if it is multiple
lines.
var log Logs all modifications of a variable to stderr.
var break Adds breakpoint for writes to a variable.
var info Prints all variables being watched for.
var clear Clears logging and breaks for variables. Passes the variable
to [string match ...] so globbing can be used.
cmd enter Set a break point for the entering of a command.
cmd leave Set a break point for the leaving of a command.
cmd step Steps through the command. Every command that is executed
inside the command is a breakpoint.
cmd clear Clear break points. Passes the command to [string match ...]
so globbing can be used.
con Connect to a TagmaDebug control server. Optional Host and
port. (Default: localhost and 5444)
p Prints the current level & procedure. When at the top level
'::' is printed for the procedure.
r Restarts the program.
x or q Exit the debugger. Ctrl-D should also have the same effect.
SETTINGS
Settings to control TagmaDebug. These are reflected by the flags inside
{} in the prompt. The flags and settings use the same letter.
B Toggle printing the body of procedures when they are defined.
E Toggle Enter acting as a shortcut to 'c Enter'.
P Toggle stepping into package.
V oggle verbosity. Print extra info, when available.
CONTROL SERVER
NOTE: The shell does not work under Tkcon.
The program server.tcl starts a TCP server. Tagma Debug can connect to
this server for remote control. All debugger output and user input is
sent to comes from the server. The server requires an event loop process
to function. By default if the program is run it starts the server
process, enters the remote debug shell and starts an event loop. The
shell is designed to make debugging similar to using TagmaDebug
directly.
The 'tagma' command is used to control the server and interact with the
debugger. With no options it sends its arguments to the remote debugger.
tagma Options:
-help Print help for the tagma command.
-select Select from connected debuggers. Lists the available and
current connections with no arguments.
-shell Enter an interactive shell. Simulates working directly with
the debugger. If there is no active connection it will wait
for a client to connect. The server must be running before the
shell is started.
-start Start the Tagma server process. (Optional port)
-verbose Control verbose mode. (on/off) Displays the current state with
no arguments.
-- End option processing.
PORTABILITY
TagmaDebug should work with any TCL version 8.4 or later. Testing has
thus far been limited to Tcl 8.5 under Cygwin on Windows 7.
INSTALLATION
Either copy tagmadebug.tcl where you want it or run "make install".
HOME
<https://github.com/LStinson/TagmaDebug>
<http://wiki.tcl.tk/28695>
COPYRIGHT
This script is derived from "TclDebugger by S.Arnold. v0.1 2007-09-09" -
<http://wiki.tcl.tk/19872>. What ever copyright he says his code is
under is what applies to this one. Since it was listed publicly with no
restrictions I am assuming it is free to modify.
AUTHOR
Written by Lorance Stinson AT Gmail....
About
Simple TCL Debugger
Resources
Stars
Watchers
Forks
Releases
No releases published
Packages 0
No packages published