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

时间:2012-09-05 00:10:05

标签: 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文件。你想尝试自己找这个文件吗?

有什么想法吗?

[UPDATE]

snoone的方式可以在大多数时间内正常工作,但有时会显示以下对话框。

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

enter image description here

2 个答案:

答案 0 :(得分:1)

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

  

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

     

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

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

我最接近你的别名是

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

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

答案 1 :(得分:1)

杰森是对的,你不能传递这样的论点。为了实现这一点,您需要通过脚本文件间接地执行此操作。

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

.shell -x winhlp32.exe -k ${$arg1} win32.hlp

然后创建别名以启动脚本,而不是直接创建shell:

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

然后,您可以使用您使用的相同命令启动帮助查看器:

api createfile