Debugging 如何在WinDBG中使用aS命令的参数

Debugging 如何在WinDBG中使用aS命令的参数,debugging,windbg,Debugging,Windbg,当我使用以下方法时,win32.hlp可以正确打开 0:000> aS api .shell -x winhlp32.exe -k createfile win32.hlp 0:000> w 但是,当我想使用参数$arg1时,如下所示 0:000> aS api .shell -x winhlp32.exe -k ${$arg1} win32.hlp 0:000> w createfile 将显示一条错误消息: “找不到win32.hlp createfile文件。是

当我使用以下方法时,win32.hlp可以正确打开

0:000> aS api .shell -x winhlp32.exe -k createfile win32.hlp
0:000> w
但是,当我想使用参数$arg1时,如下所示

0:000> aS api .shell -x winhlp32.exe -k ${$arg1} win32.hlp
0:000> w createfile
将显示一条错误消息:

找不到win32.hlp createfile文件。是否自己尝试查找此文件?

有什么想法吗

[更新]

snoone的方法在大多数情况下都可以很好地工作,但有时会显示以下对话框

显然,文件名“win32.hlp”被错误地视为搜索词的一部分。 我做错了什么


我认为这是不可能的。这看起来像是混淆了别名和脚本

在调试器命令窗口中使用别名

定义别名后,可以在任何命令项中使用它。别名将自动替换为等效别名。因此,可以将别名用作表达式或宏

因此,别名是简单的文本替换,它们不像脚本文件那样获得传递给它们的参数

我最接近让你的化名工作的是

0:000> aS api .shell -x notepad.exe -k 
0:000> api c:\temp\j.txt

这启动了notepad.exe,打开
c:\temp\j.txt

Jason是对的,您不能像这样传递参数。为了实现这一点,您需要通过一个脚本文件间接地实现它

例如,创建一个文件e:\hlplaunch.wbs并在其中放入以下行:

.shell -x winhlp32.exe -k ${$arg1} win32.hlp
然后创建别名以启动脚本,而不是直接创建shell:

aS ${/v:api} "$$>a<e:\\hlplaunch.wbs"
api createfile