Giter Club home page Giter Club logo

tagmadebug's Introduction

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....

tagmadebug's People

Contributors

lstinson avatar

Stargazers

 avatar  avatar Kearn Holliday avatar Arthur Schreiber avatar

Watchers

James Cloos avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.