Windbg脚本执行.shell命令报错‘命令行过长’问题求助
Windbg脚本执行
.shell命令出现“命令行过长”的解决办法 问题原因
在脚本里使用.shell -ci "*" mkdir C:\mydir时,-ci参数后的*是调试器命令通配符,会匹配当前行之后的所有脚本内容,导致Windbg把整个脚本的后续命令都打包传给cmd.exe,触发“命令行太长”的错误。从Process Monitor的日志也能看到,cmd收到的命令包含了.echo、注释等所有后续脚本内容。
解决方法
有两种简单的修复方式:
方式1:将*替换为空字符串
把.shell命令里的-ci "*"改成-ci "",这样调试器不会捕获后续脚本内容,只会执行当前的mkdir命令:
.echo *** before mkdir *** .shell -ci "" mkdir C:\mydir .echo *** after mkdir *** $$ many other debugger commands saving stuff to c:\mydir...
方式2:省略-ci参数
如果不需要在shell命令执行后触发调试器命令,直接去掉-ci参数即可:
.echo *** before mkdir *** .shell mkdir C:\mydir .echo *** after mkdir *** $$ many other debugger commands saving stuff to c:\mydir...
验证效果
修改后重新执行脚本,Process Monitor会显示cmd.exe仅收到mkdir C:\mydir单条命令,不会再附带后续脚本内容,也就不会出现命令行过长的错误。
内容的提问来源于stack exchange,提问作者Jonathan
相关产品推荐
相关产品推荐

