windbg文字列比較条件ブレークポイント
888 ワード
windbg文字列比較条件ブレークポイント
目的:
レジスタが文字列を指すと、ある文字列と同時にプログラムが切断されます.
問題点:
レジスタが指す文字列を比較する必要があり、別名はこれを行うことができます.
テストソース:
void main()
{
char buf[] = "shengfu";
char* p = buf;
__asm mov eax, p
}
ブレークポイント:
1 e 0040141f [e:\hello\test2\test2.cpp @ 30] 0001 (0001) 0:**** test2!main+0x3f "$>
as /ma TMS_LI eax
.block
{
.if ( $scmp("TMS_LI", "shengfu") == 0 )
{
}
.else
{
gc
}
}
説明:
1.as /ma TMS_LI eaxはeaxに別名TMS_を付けたことを示すLI,/maはTMS_を表すLIはeaxをはじめアドレスのascz文字列
2.追加します.blockの原因は、別名はblockで発効しなければならないので、この比較的変態で、ドキュメントの中にはないようですが、海外の達人が言っています.http://analyze-v.com/?p=765.
3.下ブレークポイントに「$>