Debugging

   

Practical Programming in Tcl & Tk, Third Edition
By Brent B. Welch

Table of Contents
Chapter 13.  Reflection and Debugging


The rapid turnaround with Tcl coding means that it is often sufficient to add a few puts statements to your script to gain some insight about its behavior. This solution doesn't scale too well, however. A slight improvement is to add a Debug procedure that can have its output controlled better. You can log the information to a file, or turn it off completely. In a Tk application, it is simple to create a text widget to hold the contents of the log so that you can view it from the application. Here is a simple Debug procedure. To enable it you need to set the debug(enable) variable. To have its output go to your terminal, set debug(file) to stderr.

Example 13-12 A Debug procedure.
 proc Debug { args }{    global debug    if {![info exists debug(enabled)]}{       # Default is to do nothing       return    }    puts $debug(file) [join $args " "] } proc DebugOn {{file {}}}{    global debug    set debug(enabled) 1    if {[string length $file] == 0}{       set debug(file) stderr    } else {       if [catch {open $file w}fileID] {          puts stderr "Cannot open $file: $fileID"          set debug(file) stderr       } else {          puts stderr "Debug info to $file"          set debug(file) $fileID       }    } } proc DebugOff {}{    global debug    if {[info exists debug(enabled)]}{       unset debug(enabled)       flush $debug(file)       if {$debug(file) != "stderr" &&           $debug(file) != "stdout"}{          close $debug(file)          unset debug(file)       }    } } 

       
    Top
     



    Practical Programming in Tcl and Tk
    Practical Programming in Tcl and Tk (4th Edition)
    ISBN: 0130385603
    EAN: 2147483647
    Year: 1999
    Pages: 478

    flylib.com © 2008-2017.
    If you may any questions please contact us: flylib@qtcs.net