2011-06-08 33 views
5

我正在用VS2010調試一個混合的.Net/native應用程序,並且試圖確定是否/何時釋放特定的BSTR。基於這個問題:Debug Break on Win32 Api functions我已經想出瞭如何在SysFreeString中設置斷點,但它被稱爲A LOT。我想設置一個條件,讓它只在我感興趣的特定字符串被釋放時纔會中斷。基於函數的參數,我如何在Win32 API函數中中斷?

它看起來像字符串的地址被壓入堆棧,但我不知道如何取消引用堆棧寄存器來找出它是否是我的字符串。我試圖在斷點條件下放入類似[esp] == 0x001ADCAC(其中0x001ADCAC是我感興趣的字符串的地址),但那不起作用。

回答

4

想通了!我把下列條件作爲斷點:

DW esp+4 == 0x001ADCAC 

它工作。 DW是調試器相當於「dword ptr」的。所有的「彙編語言表達」這裏列出:http://msdn.microsoft.com/en-us/library/56638b75.aspx

這會工作,以及:

*(unsigned long*)(esp+4) == 0x001ADCAC 
相關問題