ADPlus PostCommand未运行

时间:2012-08-31 17:20:11

标签: .net debugging windbg adplus

我正在尝试让ADPlus运行PostCommand,但调用失败了。

我首先使用的是在旧版本的ADPlus中用来调用PreCommand的配置文件。配置文件如下所示:

...
<PostCommands>
    <ShellSync>
        <Application> C:\path\to\foo\foobar.exe </Application>
        <Arguments> C:\foobar </Arguments>
    </ShellSync>
</PostCommands>
...

当我使用此配置文件运行ADPlus时,我收到以下错误,并且没有生成崩溃转储:

!!! ERROR !!!
Invalid key word: [C:\path\to\foo\foobar.exe]
at ADPlus.AdplusEngine.KeyWord2Command(String KeyWord, String Context, Boolean UseEscapedFlnm)
at ADPlus.AdplusEngine.ParseKeywords(String KeyWords, String Context, Boolean UseEscapedFlnm)
at ADPlus.AdplusEngine.CreateCDBScript(String FileName, AdplusApl CallingApl)
at ADPlus.AdplusApl.TryRun()
!!!ERROR - ADPlus failed to run

看到它认为C:\ path \ to \ foo \ foobar.exe应该是一个关键字,我试图将其改为一个,将我的配置文件更改为:

...
<KeyWords>
   <KeyWord Name="FooBar"> C:\path\to\foo\foobar.exe </KeyWord>
</KeyWords>
...
<ShellSync>
        <Application> FooBar </Application>
        <Arguments> C:\foobar </Arguments>
</ShellSync>
...

使用新的配置文件,会生成转储,但之后我的PostCommand没有运行。我在ADPlus日志中收到以下错误:

...
0:004> * Post-commands
0:004> C:\path\to\foo\foobar.exe
Address expression missing from ':\path\to\foo\foobar.exe'
0:004> g
...

请注意,驱动器名称C正在地址表达式缺失行中被删除。

有没有人知道为什么我的PostCommand没有运行? ADPlus的文档很少,但我遵循adplus.doc中给出的配置文件格式,adplus.doc是Microsoft调试程序包的一部分。我在PostCommand周围尝试了各种引号和反斜杠组合,但我仍然可能没有正确引用或转义。 adplus.doc中的示例没有任何引号或转义字符。

1 个答案:

答案 0 :(得分:1)

我能够通过将配置文件更改为:

来解决此问题
... 
<KeyWords> 
   <KeyWord Name="FooBar"> .shell -i- C:\path\to\foo\foobar.exe C:\foobar</KeyWord> 
</KeyWords> 
... 
<ShellSync> 
        <Application> FooBar </Application> 
</ShellSync> 
...

C:\ foobar是传递给foobar.exe的参数。当我尝试在标签中使用参数时,它没有工作。或者,您可以在-i指定的文件中提供参数。 -i-没有指定输入文件,所以我提供了内联参数。