2016-05-01 2 views
0

"エイリアスはエイリアス名と同等のエイリアスで構成されています。デバッガコマンドの一部としてエイリアス名を使用すると、その名前は自動的にエイリアスに置き換えられます。 "上記はすべてwindbgヘルプドキュメントからのものです。以下は私のwindbgスクリプトファイルの内容です。新しいコードブロックを入力すると、windbgエイリアスが実際に展開されますか?

ad /q * 
;aS MyVar 0x7b; 
.block 
{ 
    ;aS /x ${/v:MyVar} ${MyVar}+0x1; 
    .block 
    { 
     .printf "MyVar1=0x%x\n",${MyVar}; 
     .block 
     { 
      .printf "MyVar2=0x%x\n",${MyVar}; 
     } 
     .printf "MyVar3=0x%x\n",${MyVar}; 
    } 

    .block 
    { 
     .printf "MyVar4=0x%x\n",${MyVar}; 
    } 

} 
.block 
{ 
    .printf "MyVar5=0x%x\n",${MyVar}; 
} 

al; 

このスクリプトを実行した結果は次のとおりです。

0:000> $$><c:\windbg.wds 
MyVar1=0x7b 
MyVar2=0x7b 
MyVar3=0x7b 
MyVar4=0x7b 
MyVar5=0x7c 
    Alias   Value 
-------   ------- 
MyVar   0x7c 

最初の4行の結果がなぜ発生したのかわからないので、私はここで助けを求めるために来ています。 WinDbgのaSヘルプから

答えて

1

:セミコロンの後の行の部分は、エイリアスの展開を必要とする場合、あなたは新しいブロックに行の第2の部分を囲む必要があることを

注意。

WinDbgの.blockヘルプから:各ブロックが入力されると

、ブロック内のすべてのエイリアスが評価されています。コマンドブロック内のあるポイントでエイリアスの値を変更すると、そのポイントに続くコマンドは、それらが下位ブロック内にない限り、新しいエイリアス値を使用しません。 下位は明らかにないネストされたの意味を持つ

はい、WinDbgのスクリプト言語にはもう1つの制限があります。 PyKdなどの代替案を検討することをおすすめします。

関連する問題