我正在调试一组复杂的 dos 批处理文件,这些文件更改目录、设置变量、创建文件并相互调用。我使用的是 Windows 10。我知道,我可以编辑每个文件并添加 @echo 并每隔一段时间暂停一次。但这很乏味而且容易出错。我肯定会把事情搞砸得更多。我记得在 Turbo-C 时代有一种方法可以一次执行一行程序并检查程序的状态。所有这一切,无需编辑代码。 dosbatch 文件没有这样的方法(或 cmd.exe 的模式)吗?
简短的回答肯定是否定的。
但是...
我所做的是保留一个用于调试变量的前缀字符,比如
#
。
然后
call monitor somestring
在兴趣点
路径中的
monitor.bat
包含
rem goto :eof
@echo off
setlocal
echo =============================================
echo monitor %*
set #
echo =============================================
pause
然后在要调试的批处理中,您可以输入,例如。
call monitor place-identifier critical data %%b %%c %%q
报告代码位置、关键数据和变量、受监控的变量以及您喜欢的任何其他内容,如果您在
errorlevel
行之间扩展报告(例如 ===
),请小心处理诸如变化 if exist filename (echo filename exists) else (echo filename missing)
之类的事情)
“删除”调试可以通过简单地从
rem
中删除 monitor.bat
来完成(仍然执行调用的时间成本,但您仍然可以通过重新 rem
ming 来保留即时进入调试模式 monitor.bat
)