| 
| 
| 
| #82015 - 2003-03-08 07:37 AM  Debugging script without user input. also during logging on. the advanced way. |  
| MCA   KiX Supporter
 
       
   Registered:  2000-04-28
 Posts: 5152
 Loc:  Netherlands, EU
 | 
Dear,
 (inspired on topic Debugging without user input)
 
 There is an advanced way of debugging your script. First it is important that
 your script is correct.
 Secondly you can extend your script with additional kixtart code, which makes
 it possible to debug without the requirement of user input. Also during a log-
 ging on session it can be very handy.
 
 SYNTAX checking part
 
 Question: can I easily check mine kixtart code.
 Answer: YES
 
 Our suggestion:
 use our tools kixstrip and kixref, which can find on our site.
 Documentation about [bkixstrip[/b] is also available.
 (Home - Kix downloads or Home - Kix tools or Summary of Site)
 With kixstrip you can verify your code on all kind of errors. f.e. missing quotations,
 unknown macros, incomplete block-structures (IF/ELSE/ENDIF,SELECT/CASE/ENDSELECT,etc.)
 Most common call is
 
 kixstrip inputput.kix output.kix /block_check
 
 kixstrip can create also automatically a general syntax structure.
 With kixref you can generate a cross reference map of variables, commands, functions,
 macros and labels you are using.
 Most common call is
 
 kixref input.kix output.txt
 
 Also it can translate your keywords to identical ones and it can show
 a short list of warnings.
 Those calls are
 
 kixref input.kix output.kix /translate
 kixref input.kix output.txt /warnings
 
 DEBUGging part
 
 Question: is there a way to find our what line in a script cause
 an error during EXECUTION and during LOGGING ON?
 Answer:   YES
 
 So our suggestion:
 use our tool kixstrip, which can add all kind of debugging code to your script.
 so you can see exactly which part of your script creates possible 'hanging' situation
 or which part of your script slows it down.
 So it isn't necessary for you to add all kind of debugging code to it.
 Code which can also introduce new errors.
 
 Our suggestion 1:
 
 Very your syntax with our kixstrip tool. Possible call
 
 kixstrip input.kix output.kix /block_check /show_structure
 
 Our Suggestion 2:
 
 A way to see what is going wrong can be done by our kixstrip
 tool with option /debug.
 At the end you only need to look at output file to see what was
 executed and what were the error status.
 The debugging file will not be overwritten.
 
 QUESTIONs:
 - is it possible to see what is happening during a logging on session.
 - is it possible to see how long our script runs.
 
 Advice: please run your script after adding our debugging code to it.
 How:
 - add debugging code?
 - is debugging possible without user intervention? YES
 - can is be usefull by logon or script problems? YES
 
 A way of checking your script is by using our tool kixstrip on our site
 http://home.wanadoo.nl/scripting
 (Home - Kix downloads or Home - Kix tools or Summary of Site)
 With the option /debug we add additional kixtart code, which shows
 
 So it is possible to catch the error status of kixtart statements duringwhich line was executed.what was the time of execution.what was the error status of previous executed line.
 a logon session.and
 it will show the last executed before script is crashing.
 
 An example we are using a reduced version of our os.kix script
 
 code:For changing your script with debugging code use
 $os=""SELECT
 CASE (@inwin = 1) AND (@dos = "5.1")   ; - Windows XP -
 $os="XP"
 CASE (@inwin = 1) AND (@dos = "5.0")   ; - Windows 2000 -
 $os="W2K"
 CASE (@inwin = 1)                      ; - Windows NT -
 $os="NT4"
 CASE (@inwin <> 1) AND (@dos = "4.90") ; - Windows ME -
 $os="ME"
 CASE (@inwin <> 1) AND (@dos = "4.10") ; - Windows 98 -
 $os="W98"
 CASE (@inwin <> 1) AND (@dos = "4.0")  ; - Windows 95 -
 $os="W95"
 CASE 1
 $os="???" ; - undetermined -
 ENDSELECT
 ? "$$os      "+$os
 
 f.e. kixstrip input.kix output.kix /debug
 
 It is no longer necessary to change RedirectOutput statement for normal operation.
 The default debugging file will be
 %tmp%\kixdebug.txt.
 By an automatic cleaning of the %tmp% we advise to uncomment the line
 
 ;$_debug_file="c:\kixdebug.txt"
 
 During the execution the information will be append to previous information.
 So it is possible to check the differences.
 
 be sure above RedirectOutput file has write permissions.
 
 A kixstrip output example of our script os.kix (reduced version) is:
 
 code:An output example of kix32 run:
             ;CLSIF (instr("-3.0x-3.1x-3.2x-3.3x-","-"+substr(@kix,1,3)+"x-") <> 0)
 IF MessageBox("sorry, your kixtart "+@kix+" release is too old."+CHR(13)+CHR(10)+CHR(13)+CHR(10)+" please upgrade.","KiXtart "+@kix+" info",4112,300)
 ENDIF
 EXIT
 ENDIF
 COLOR C+/N
 ;AT (1,1) " "
 
 $_debug_file="kixdebug.txt" ; - %tmp% directory -
 IF (len($_debug_file) <> 0)
 IF (substr("%tmp%",len("%tmp%"),1) = "\")
 $_debug_file="%tmp%"+$_debug_file
 ELSE
 $_debug_file="%tmp%\"+$_debug_file
 ENDIF
 ENDIF
 ;$_debug_file="c:\kixdebug.txt"
 IF RedirectOutput($_debug_file)
 ENDIF
 
 ? "-"+LCASE(@day)+" "+@date+" "+@time+"- kixtart "+@kix+"/4.00e script starting"
 IF (Val(substr(@kix,1,1)) >= 4)
 IF (len(@scriptname) <> 0)
 " ("+LCASE(@scriptname)+")"
 ENDIF
 ENDIF
 ? "-"
 IF ("$_debug_already_starting" <> "yes")
 ? "-curdir:       "+LCASE(@curdir)
 ? "-scriptdir:    "+LCASE(@scriptdir)
 IF (instr("-4.1x-","-"+substr(@kix,1,3)+"x-") <> 0)
 ? "-scriptname:   "+LCASE(@scriptname)
 ENDIF
 ? "-startdir:     "+LCASE(@startdir)
 ? "-"
 ? "-userid:       "+LCASE(@userid)+"/"+LCASE(@wuserid)
 ? "-user priv:    "+LCASE(@priv)
 IF (instr("-4.xx-","-"+substr(@kix,1,2)+"xx-") <> 0)
 ? "-version:      inwin="+@inwin+"/dos="+@dos+"/productsuite="+@productsuite+"/producttype="+@producttype+"/csd="+LTRIM(RTRIM(@csd))
 ELSE
 ? "-version:      inwin="+@inwin+"/dos="+@dos
 ENDIF
 ? "-"
 IF (instr("-4.1x-","-"+substr(@kix,1,3)+"x-") <> 0)
 ? "-"+@cpu+" (memory "+MemorySize()+" MB)"
 ? "-"
 ENDIF
 ENDIF
 
 $_debug_temp_name="" ; -format: yyyymmdd_hhmmss.sss_999 scriptname-
 IF (instr("-3.6x-","-"+substr(@kix,1,3)+"x-") <> 0) OR (Val(substr(@kix,1,1)) >= 4)
 IF (instr("-4.xx-","-"+substr(@kix,1,2)+"xx-") <> 0)
 $_debug_temp_name=@msecs
 SELECT
 CASE (len($_debug_temp_name) = 1)
 $_debug_temp_name="00"+$_debug_temp_name
 CASE (len($_debug_temp_name) = 2)
 $_debug_temp_name="0"+$_debug_temp_name
 ENDSELECT
 $_debug_temp_name="."+$_debug_temp_name
 IF Srnd(@msecs)
 ENDIF
 SLEEP 0.050
 ELSE
 IF Srnd((-1)*32767/(substr(@time,7,2)+1))
 ENDIF
 SLEEP 1
 ENDIF
 $_debug_temp_name=substr(@date,1,4)+substr(@date,6,2)+substr(@date,9,2)+"_"+substr(@time,1,2)+substr(@time,4,2)+substr(@time,7,2)+$_debug_temp_name+"_"+Rnd()
 IF (len($_debug_temp_name) < 25)
 $_debug_temp_name=substr($_debug_temp_name+"          ",1,25)
 ENDIF
 IF (instr("-4.1x-","-"+substr(@kix,1,3)+"x-") <> 0)
 IF (len(@scriptname) < 12)
 $_debug_temp_name=$_debug_temp_name+" "+substr(@scriptname+"            ",1,12)
 ELSE
 $_debug_temp_name=$_debug_temp_name+" "+@scriptname
 ENDIF
 ENDIF
 ENDIF
 
 IF ("$_debug_already_starting" <> "yes")
 ? "-debug file:   "+$_debug_file
 ? "-debug name:   "+LCASE($_debug_temp_name)
 ELSE
 IF (len($_debug_temp_name) <> 0)
 ? "-debug: "+LTRIM(RTRIM(LCASE($_debug_temp_name)))+" -> "+$_debug_file
 ELSE
 ? "-debug-file: "+$_debug_file
 ENDIF
 ENDIF
 
 IF (instr("-3.6x-","-"+substr(@kix,1,3)+"x-") = 0) AND (Val(substr(@kix,1,1)) < 4)
 GOTO _debug_starting_point
 ENDIF
 DIM $_debug_name ; -create local variable-
 :_debug_starting_point
 $_debug_name=LCASE($_debug_temp_name)
 $_debug_already_starting="yes"
 ? "-"
 ?"----- start-"+@time+"-"+$_debug_name+"- @error @serror"?
 
 ?"-         1-"+@time+"-"+$_debug_name+"- @error @serror"?  $os=""
 ?"-         2-"+@time+"-"+$_debug_name+"- @error @serror"?  SELECT
 ?"-         3-"+@time+"-"+$_debug_name+"- @error @serror"?  CASE
 (@inwin = 1) AND (@dos = "5.1")   ; - Windows XP -
 ?"-         4-"+@time+"-"+$_debug_name+"- @error @serror"?        $os="XP"
 ?"-         5-"+@time+"-"+$_debug_name+"- @error @serror"?  CASE
 (@inwin = 1) AND (@dos = "5.0")   ; - Windows 2000 -
 ?"-         6-"+@time+"-"+$_debug_name+"- @error @serror"?        $os="W2K"
 ?"-         7-"+@time+"-"+$_debug_name+"- @error @serror"?  CASE
 (@inwin = 1)                      ; - Windows NT -
 ?"-         8-"+@time+"-"+$_debug_name+"- @error @serror"?        $os="NT4"
 ?"-         9-"+@time+"-"+$_debug_name+"- @error @serror"?  CASE
 (@inwin <> 1) AND (@dos = "4.90") ; - Windows ME -
 ?"-        10-"+@time+"-"+$_debug_name+"- @error @serror"?        $os="ME"
 ?"-        11-"+@time+"-"+$_debug_name+"- @error @serror"?  CASE
 (@inwin <> 1) AND (@dos = "4.10") ; - Windows 98 -
 ?"-        12-"+@time+"-"+$_debug_name+"- @error @serror"?        $os="W98"
 ?"-        13-"+@time+"-"+$_debug_name+"- @error @serror"?  CASE
 (@inwin <> 1) AND (@dos = "4.0")  ; - Windows 95 -
 ?"-        14-"+@time+"-"+$_debug_name+"- @error @serror"?        $os="W95"
 ?"-        15-"+@time+"-"+$_debug_name+"- @error @serror"?  CASE
 1
 ?"-        16-"+@time+"-"+$_debug_name+"- @error @serror"?        $os="???" ; - undetermined -
 ?"-        17-"+@time+"-"+$_debug_name+"- @error @serror"?  ENDSELECT
 ?"-        18-"+@time+"-"+$_debug_name+"- @error @serror"?  ? "$$os      "+$os
 
 ?"------- end-"+@time+"-"+$_debug_name+"- @error @serror"
 ? "-"
 ? "-"+LCASE(@day)+" "+@date+" "+@time+"- kixtart "+@kix+"/4.00e script ending"
 IF (Val(substr(@kix,1,1)) >= 4)
 IF (len(@scriptname) <> 0)
 " ("+LCASE(@scriptname)+")"
 ENDIF
 ENDIF
 ? "-"
 IF RedirectOutput("CON")
 ENDIF
 COLOR C+/N
 ?
 ? "Informative KIX "+@kix+":"+" debug info see "+CHR(34)+$_debug_file+CHR(34)
 IF (Val(substr(@kix,1,1)) >= 4)
 IF (len(@scriptname) <> 0)
 " ("+LCASE(@scriptname)+")"
 ENDIF
 ENDIF
 IF RedirectOutput($_debug_file)
 ENDIF
 ;($begin)
 ;
 ;                       sat 08-mar-2003 07:19:51       (kix 4.20 vs 4.00e)
 ;
 ;Informative KIXSTRIP:   no errors found (input=18 output=18 skip=0).
 ;
 ;Summary     KIXSTRIP:      block structures
 ;                           - do:until                 [0:0]
 ;                           - for|each:in|to:step|next [0|0:0|0:0|0]
 ;                           - function:endfunction     [0:0]
 ;                           - if:else:endif            [0:0:0]
 ;                           - select:case:endselect    [1:7:1]
 ;                           - while:loop               [0:0]
 ;Informative KIXSTRIP:    1 block_structure found.
 ;Informative KIXSTRIP:   no UDF's found.
 ;Informative KIXSTRIP:   no labels found.
 ;Summary     KIXSTRIP:      BREAK CALL DEBUG DISPLAY ENDFUNCTION EXECUTE EXIT FUNCTION GET GETS GOSUB GOTO OLExxx PLAY QUIT RETURN RUN SHELL SLEEP THEN USE
 ;
 ;($end)
 
 
 code:When you still have problems please:
 -saturday 2003/03/08 07:20:52- kixtart 4.21 Release Candidate 1/4.00e script starting (os.kix)-
 -curdir:       d:\
 -scriptdir:    d:
 -startdir:     d:
 -
 -userid:       MCA/MCA
 -user priv:    guest
 -version:      inwin=2/dos=4.90/productsuite=0/producttype=Windows Me/csd=
 -
 -debug file:   c:\temp\kixdebug.txt
 -debug name:   20030308_072052.610_2030
 -
 ----- start-07:20:52-20030308_072052.610_2030 - 0 The operation completed successfully.
 
 -         1-07:20:52-20030308_072052.610_2030 - 0 The operation completed successfully.
 
 -         2-07:20:52-20030308_072052.610_2030 - 0 The operation completed successfully.
 
 -        10-07:20:52-20030308_072052.610_2030 - 0 The operation completed successfully.
 
 -        11-07:20:52-20030308_072052.610_2030 - 0 The operation completed successfully.
 
 -        18-07:20:52-20030308_072052.610_2030 - 0 The operation completed successfully.
 
 $os      ME
 ------- end-07:20:52-20030308_072052.610_2030 - 0 The operation completed successfully.
 -
 -saturday 2003/03/08 07:20:52- kixtart 4.21 Release Candidate 1/4.00e script ending (os.kix)
 -
 
 
 Greetings.put some code on the board.put your logon batch file on the board.put the output of a debugging run on the board.put a DIR list of your NETLOGON directory on the board.put a DIR list of your clients on the board with contains informationabout: KIX32.EXE and KX*.DLL
 NOTES:
 
 btw: it is only some additional information about how you can debug your script.Before using the debug mode be sure your script doesn't generatederrors.
 With the kixstrip option /Block_Check you can verify that. So you
 should get something like:
 
 quote:;Informative KIXSTRIP:   no errors found (input=18 output=18 skip=0).
 
 
After convert your script for debugging don't throw away the original script.Kixstrip can't remove inserted debug code.
 
 btw: with kixstrip ? you get a summary of possible options.
 The result will be something like this:
 
 code:btw: Symbol
  Kixstrip 4.20 (vs 4.00e)                 (c) MCA - scripting@wanadoo.nl - 2003------------------------------------------------------------------------------
 kixstrip   [input] [output]
 /Block_Check or /BC     /Combine                /Debug
 /Headers                /License                /License=[var]
 /Performance            /Print                  /Progress
 /Show_Errors or /SE     /Show_Structure or /SS  /Translate
 /TAB=[num] (def: 6)
 default:   /Combine /Headers /License             (other options are negative)
 other:   - options with prefix "/No" will be ignored. f.e. /NoDebug /NoTab
 - /Block_Check /Tab=2  (auto set: /NoCombine /NoLicense /Print      )
 /Debug               (auto set: /NoLicense /Print /Show_Errors    )
 - /Block_Check         (reformat kixtart code inc. block structure  )
 /Combine             (combine lines to one line                   )
 /Debug               (insert "line numbers" for each printed line )
 /Headers             (insert summary report as footer             )
 /Performance         (insert "indicator"    for each executed line)
 /Print               (do not remove print statements              )
 /Progress            (insert "indicator"    for each printed line )
 /Show_Errors         (insert error messages in output file        )
 /Show_Structure      (insert block structures in output file      )
 /Translate           (convert keywords to upper/lower-case        )
 examples - kixstrip test.kix test.out /Block_Check /Debug
 - kixstrip test.kix test.out /Performance /Show_Structure
 
  on our homepage has been linked to related http://kixtart.org topic. |  
| Top |  |  |  |  
 Moderator:  Jochen, Radimus, Glenn Barnas, Allen, Arend_, ShaneEP, Mart
 
 | 
| 
 
| 0 registered
and 360 anonymous users online. 
 | 
 |  |