Adplus无法创建二次机会转储文件,疑因文件名含星号导致
解决Adplus二次机会转储因星号导致的创建失败问题
我之前也踩过Adplus这个坑!你推测的完全正确——Windows系统的文件名**不允许包含星号(*)**这种通配符,而Adplus默认生成的二次机会转储文件名里带了*,直接触发了Win32 123号错误(文件名/目录名语法不正确),导致转储文件创建失败。
下面给你几个可行的解决方案:
修改Adplus配置文件自定义文件名模板
找到WinDbg安装目录下的adplus.config配置文件,搜索和二次机会转储(SecondChance)相关的文件名配置段,把模板里的*替换成Windows允许的字符或Adplus支持的变量,比如进程ID({PID})、时间戳({TimeStamp})等。举个例子,把原来的违规模板:FULLDUMP_SecondChance_*_UnknownException_MyProcess.exe__8c40_2018-05-03_02-45-05-535_8b24.dmp修改为合法格式:
FULLDUMP_SecondChance_{PID}_UnknownException_MyProcess.exe_{TimeStamp}.dmp保存配置后重新运行Adplus即可。
通过命令行参数指定自定义模板(无需修改配置文件)
启动Adplus时添加-dumpnametemplate参数,直接定义合法的文件名模板,比如:adplus -crash -pn MyProcess -o c:\temp -dumpnametemplate "FULLDUMP_SecondChance_{PID}_{Exception}_{TimeStamp}.dmp"Adplus支持的常用变量包括:
{PID}:目标进程的ID{Exception}:触发转储的异常类型{TimeStamp}:转储生成的时间戳
这些变量都会生成合法的字符,不会出现违规的通配符。
快速验证问题根源
你可以手动在c:\temp下尝试创建一个带星号的文件,系统会直接弹出“文件名无效”的提示,这也能直观验证星号确实是导致转储失败的原因。
改完之后再测试,二次机会转储应该就能正常生成到指定目录了。
内容的提问来源于stack exchange,提问作者AviTM




