2

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 が Address expression missing 行で取り除かれていることに注意してください。

私の PostCommand が実行されていない理由は誰にもわかりますか? ADPlus のドキュメントはまばらですが、Microsoft デバッガー パッケージの一部である adplus.doc にある構成ファイル形式に従っています。PostCommand の周りに引用符とバックスラッシュのさまざまな組み合わせを試しましたが、何かを適切に引用またはエスケープしていない可能性があります。adplus.doc の例には、引用符やエスケープ文字が含まれていません。

4

1 に答える 1

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- は入力ファイルを指定しないので、引数をインラインで指定しました。

于 2012-08-31T23:58:53.780 に答える