WAD Strange Unexpected "features" in the Debugger

Jul 13, 2017
20
0
It has been a little over 1 hour since I downloaded the demo version.
I was disappointed to find that I am debugging your program instead of my batch file.

Feature #1 - Watch panel shows wrong content of batch variables
See screen shot "Watch list corruption.jpg"
Watch list corruption.jpg

This shows the batch file has just stepped into a "For /F" command while the Watch panel shows the variable "file" as having the content of the 1st iteration of the "For /F" command PLUS some extra characters. Below the Watch panel I have pasted the Environments Variables panel which shows the "file" variable actually has "casrdr80.bas" as its content. Also this panel shows the variables created by the "For /F" command. The variable "f" has the content shown in the Watch panel.

It appears the Watch panel has mis-interpreted the "file" variable as "f", and put in the content of the "f" variable in front of the remnant of name of the variable "ile"
This is compounded by the Watch window not being updated when the "file" variable has it's content changed.
See screen shot "Watch list corruption2.jpg"
Watch list corruption2.jpg

This shows the source batch file running in "single step" mode having just used the content of the "f" variable as comma separated input parameters and each parameter put into separate variables. The Debugger console window shows that the "file" variable has had "diskio.bas" assigned to it, but the Watch window does not show any change.


Feature #2 The Debugger doesn't like having the batch file in progress being stopped with the "Stop" button on the tool bar.
See screen shot "Debugger_error - batch (null).jpg"
Debugger_error - batch (null).jpg


When the "Stop" button is pressed, the TCC screen shows a continuous stream of "TCC: Unknown Command "(null)" until I change to that screen and press [Ctrl][C].
When I restart the run by pressing the "Start" button, Take Command then shows an error about an invalid label.
See screen shot "Restart Error.jpg"
Restart Error.jpg

The label name that it is complaining about is the same as the 1st of the comma separated values passed from the "For /F" command.
After I clear this error message by pressing the [OK] button, the TCC screen shows the same message prefixed with the batch file name and a number "[98]" that is probably the last line + 1 (the batch file has only 97 lines)
See screen shot "Restart Error - Debugger screen.jpg"
Restart Error - Debugger screen.jpg


When I press the "start" button a 2nd time, the batch file runs OK.

Here is the batch file I am using :-

set drv=%~d0 &set pth=%~p0
%drv% &cd "%pth%" &cls & echo on
set /A dup_grps=0
if not exist dups_list.csv echo File Name,Path,Size,Modified,File Type,MD5,Group,Hard Links > dups_list.csv
for /f "tokens=* delims=? skip=1" %%l in ('type All_TRS80.lst') do call :chk_dup %%l
pause
goto :eof
::-------------------------
:chk_dup %%l
set md5=%~6
if "%md5%"=="" goto :eof
set /A dups=0
if %2=="casrdr80.bas" pause
find ",""%md5%""," "All_TRS80.lst" > dups.chk
find /c ",""%md5%""," dups.chk > dups.cnt
for /f "tokens=2 delims=:" %%m in ('type dups.cnt') do set /A dups=%%m
if %dups% LSS 2 goto :eof
set /a dups=0
find /c ",""%md5%""," dups_list.csv > dup_done.chk
for /f "tokens=2 delims=:" %%d in ('type dup_done.chk') do set /a dups=%%d
if %dups% NEQ 0 goto :eof
for /f "tokens=* delims=? skip=2 " %%f in ('type dups.chk') do call :count_dups %%f
if %dups% GTR 1 (
set /A dup_grps+=1
for /f "tokens=* delims=? skip=2" %%f in ('type dups.chk') do call :writ_dup %%f
)
goto :eof
::------------------------
:writ_dup
set fpth=%~dp1 &set file=%2 &set fsize=%3 &set dattim=%4 %5 &set md5=%~6 &set errs=%7
echo %file%,"%fpth%","%fsize%","%dattim%","%md5%","%dup_grps%","" >> dups_list.csv
goto :eof
::-------------------------
:count_dups %%f
set file=%~2
if not "%file:~0,3%"=="(d)" (
if not "%file:~0,3%"=="(x)" (
if not "%file:~0,3%"=="(j)" (
if not "%file:~0,3%"=="(u)" (
if not "%file:~0,3%"=="(b)" set /a dups+=1
)
)
)
)
goto :eof
::-------------------------


and sample data to test with - put into file named All_TRS80.lst

path,filename,size,modifiedutc,md5,error
"\TRS32\clcplus1.bas","clcplus1.bas",4424,1996-12-24 12:32:00,"8afb5d99829c66c5dfbf6a81d54d8830",""
"\TRS32\CLONE2D","CLONE2D",1563,1996-12-24 12:32:00,"1ca3aa3d1c8b18b790a1cd4b57283b19",""
"\TRS32\cmd2cas.exe","cmd2cas.exe",19970,2005-03-02 12:34:16,"630902be4f3a61350908fdadf04af97e",""
"\TRS32\cmd2cas.txt","cmd2cas.txt",685,2005-01-21 12:40:20,"380da504f12f939a836c8eefe4ccce11",""
"\TRS32\cmdfil5a.cmd","cmdfil5a.cmd",2844,1996-12-24 12:32:00,"35e9431f9e2b13ce742845080ec88e04",""
"\TRS32\Create1.bas edit screen.BMP","Create1.bas edit screen.BMP",55358,2017-07-12 19:13:28,"81eabb3f2591d9088bfe2a3c70a92176",""
"\TRS32\cresta2.hrc.WAV","cresta2.hrc.WAV",46,2017-07-12 01:51:35,"51114b37cd494fb0f84788f346e5d008",""
"\TRS32\D012DD80 PCG-80 Display.DSK","D012DD80 PCG-80 Display.DSK",1024016,2016-01-23 23:18:27,"decea4e59b9870ffc8f53e3ccdd1a3b7",""
"\TRS32\D012DD80 PCG-80 Display.hfe","D012DD80 PCG-80 Display.hfe",2008064,2016-01-24 04:50:59,"93919a0c3c02791dc854236a12b7009a",""
"\TRS32\D029DD80 Lowes HiRes.DSK","D029DD80 Lowes HiRes.DSK",1024016,2016-01-23 23:19:09,"7074b8a3da8001ebfa19edda7c78dbbc",""
"\TRS32\D029DD80 Lowes HiRes.hfe","D029DD80 Lowes HiRes.hfe",2008064,2016-01-24 04:51:25,"11164af41c36b3b90edd72a708e538a1",""
"\TRS32\D067DD80 PCG-80 Graphics.DSK","D067DD80 PCG-80 Graphics.DSK",1024016,2016-01-23 23:18:27,"decea4e59b9870ffc8f53e3ccdd1a3b7",""
"\TRS32\D067DD80 PCG-80 Graphics.hfe","D067DD80 PCG-80 Graphics.hfe",2008064,2016-01-24 04:51:42,"0a89b0de12341bc2e2f4c847faccad65",""
"\TRS32\D068DD80 PCG-80 Games.DSK","D068DD80 PCG-80 Games.DSK",1024016,2016-01-23 23:20:19,"5599860bb99819a5121e98b6e8aa27ba",""
"\TRS32\D068DD80 PCG-80 Games.hfe","D068DD80 PCG-80 Games.hfe",2008064,2016-01-24 04:52:00,"f62facbd5675ed3af31173dd41a56dce",""
"\TRS32\D074DD80 FRED Music.DSK","D074DD80 FRED Music.DSK",1024016,2016-01-23 23:21:14,"a32fce0408a1a5010bfbe35f4e2d1e15",""
"\TRS32\D074DD80 FRED Music.hfe","D074DD80 FRED Music.hfe",2008064,2016-01-24 04:52:16,"997b6762d36393ab3c067a0646ab7f8b",""
"\TRS32\dataio.esf","dataio.esf",10812,2009-07-09 09:56:38,"f33f8f86f3d8be49b1e6dfd56fac1ae6",""
"\TRS32\DataScope - cassread.bas","DataScope - cassread.bas",6699,1982-10-07 13:00:00,"2e6989b68f9a4d6ddf2a8393f6ef7bf6",""
"\TRS32\DataScope - cassread.src","DataScope - cassread.src",4608,1982-10-07 13:00:00,"37a460118966d75900445e49db27bd15",""
"\TRS32\DataScope CMD 16K.WAV","DataScope CMD 16K.WAV",485146,2014-12-30 03:37:28,"83c619693c5011406aa602e6cc70ff91",""
"\TRS32\DataScope CMD 48K.cas","DataScope CMD 48K.cas",527,2014-12-30 03:32:09,"e21b421c21bd913a6b94cf66b4d8b517",""
"\TRS32\datascope.SNP","datascope.SNP",66356,2014-12-29 21:26:32,"e4dd22272defbbc9703d6a59b60b3b14",""
"\TRS32\datascope16K.SNP","datascope16K.SNP",66397,2014-12-30 03:44:47,"289675167bb73ee9596de72ec21f91e5",""
"\TRS32\DD.CMD","DD.CMD",1914,1997-08-16 04:04:36,"a4b1def8e20539033591716d21825b9a",""
"\TRS32\dddpls14.cmd","dddpls14.cmd",5209,1996-12-24 12:32:00,"1037d57ad884b13aac3f25ef7f966f88",""
"\TRS32\DDFORM.CMD","DDFORM.CMD",2560,1997-08-16 04:04:34,"b46b31843891b25c4f345772447c1add",""
 

rconn

Administrator
Staff member
May 14, 2008
12,319
148
Feature #1 - Watch panel shows wrong content of batch variables
It appears the Watch panel has mis-interpreted the "file" variable as "f", and put in the content of the "f" variable in front of the remnant of name of the variable "ile".

This is one of your CMD "features". If you're running inside a FOR loop, CMD (and TCC for reasons of compatibility) look for a single character variable on the command line, and if they find something like "%file" it will be replaced with the contents of the FOR variable %f + "ile". I know it's awful, but you did say you wanted CMD compatibility ...

You can use the TCC "%[var]" syntax to force recognition of the (entire) variable name.
 

rconn

Administrator
Staff member
May 14, 2008
12,319
148
Feature #2 The Debugger doesn't like having the batch file in progress being stopped with the "Stop" button on the tool bar.

The "Stop" button in the IDE tells TCC to stop debugging after the current command finishes processing. The problem with doing that in your batch file is that you're usually inside a FOR statement -- and a FOR is a single command until it finishes all of its looping.

The only way the debugger could get around this would be to send a ^Break to the TCC process when you press Stop, which has the potential to cause MAJOR problems if TCC was in the middle of something like a COPY, MOVE, DEL, REN, etc.
 
Similar threads
Thread starter Title Forum Replies Date
R strange bug? Support 7
Jesse Heines Strange Line Wrapping Behavior Support 14
F strange results Support 9
M Strange error messages from TCC in FTP copy Support 7
M Another possibly strange remote registry issue Support 5
forbin Strange handling of [nonbright] magenta background (v22) Support 2
N Fixed Strange dir behavior Support 6
vefatica REGDIR, strange error message Support 7
P Strange mouse behavior with list Support 2
vefatica Strange tcc.exception.log Support 7
vefatica A strange one Support 0
D Strange DO behavior with /O Support 5
Glenn Bowes Strange text at startup Support 5
Steve Pitts WAD Strange output from DEL of a non-existent directory Support 7
vefatica Big numbers, strange errors Support 1
aedthuio Strange... lpksetup Support 4
CWBillow dir /4 strange Support 2
D Strange issue with FOR loop Support 15
MikeBaas Strange prob with %@replace.. Support 4
vefatica OT: strange files in %TEMP Support 10
Dan Glynhampton Documentation v15 help: Strange links in @INT topic Support 0
R WAD Strange output from "memory" command Support 1
M Yet another strange something re something called "@TCONVERT" Support 8
Roedy How to? Strange colours Support 9
M WAD Strange "Start" misbehavior... Support 10
vefatica Very strange console font corruption Support 3
Steve Pitts Strange problem with FREE Support 10
A strange error in alias Support 9
newgeekorder Debugger IDE - strange tab and parameter behaviour Support 1
Exolon Strange Prompt. Support 6
vefatica Strange folders Support 1
T Strange CPU value Support 3
J Strange error: unset /s Support 14
M Strange behavior... Support 2
CWBillow Strange happenings Support 2
B Strange handling of a .BAT file Support 5
vefatica Strange behavior reloading SHRALIAS sav files. Support 1
J ASSOC / FTYPE strange error message Support 3
D Strange crashes in @CRC32 and @MD5 Support 9
Charles Dye Strange output, here-doc redirection, TYPE, //UnicodeOutput=Yes Support 6
S Strange CHKDSK behavior Support 6
vefatica Strange results with CP 1252 Support 12
S Strange REN problem - non-English characters Support 3
dcantor Strange status in ACTIVATE command Support 0
sully9 How to? Unexpected %DATE% CMD variable format (vs DATE /T format) in CMDebug Support 1
vefatica @FILESIZE[] ... allocated ... unexpected results Support 0
Mike Hall Unexpected "Variable loop" in IF condition Support 10
rps How to? dir /s unexpected results Support 10
R Unexpected 'Cancel Batch Job' prompts Support 13
A How to? PhraseExpress autotext/autocompletion printing unexpected characters Support 4

Similar threads