Benutzer mit den meisten Antworten
Eigener Stacktrace mit IDebugSymbolGroup2 und GetSymbolName / GetSymbolValueText

Frage
-
Hi,
ich baue mir gerade ein eigenes Programm zum Untersuchen von MiniDumps.
Ich scheitere zur Zeit bei der Anzeige der Argumente der Funktionen in einem Call-Stack.Zum Testen verwende ich einen "bekannten" Absturz-Minidump:
class CMyObject { CString Text; };
void Compare(CMyObject *pObject1, CMyObject *pObject2)
{
pObject1->Text.CompareNoCase(pObject2->Text);
}void Test(COther *pOther1, COther *pOther2)
{
Compare(nullptr, nullptr);
}* MiniDump in WinDbg, dort "Call Stack" mit "Source args":
Compare(class CMyObject * pObject1 = 0x00000000, class CMyObject * pObject2 = 0x00000000)
Test(class COther * pOther1 = 0x00000000, class COther * pOther2 = 0x00000000)
Super: ich sehe sofort: Ich arbeite mit Null-Pointern und habe keine Check....Selber mache ich:
* mit IDebugControl4::GetStackTrace den Stack holen
* IDebugSymbolGroup2 holen
* zu jedem Frame (mit IDebugSymbols3::SetScope) hole ich mir die DEBUG_SCOPE_GROUP_ARGUMENTS und DEBUG_SCOPE_GROUP_LOCALS
* zu jedem Symbol hole ich mir mit GetSymbolName, GetSymbolValueText und GetSymbolTypeName die InfosIch bekomme quasi
mfc100!CString::CompareNoCase+0x15
char * psz 0x5fc31c14 "--- memory read error at address 0x5fc31c14 ---"MyDLL!Compare
Symbol 1
Name: pMyObject1
Value: 0x5fc31c14 class CMyObject *
Type: class CMyObject *
Symbol 2
Name: pMyObject2
Value: 0x08afcfc0 class CMyObject *
Type: class CMyObject *
MyDLL!Test
Symbol 1
Name: pOther1
Value: 0x5fc31c14 class COther *
Type: class COther *
Symbol 2
Name: pOther2
Value: 0x08afcfc0 class COther *
Type: class CMyObject *GetSymbolName liefert mir also immer den erwarteten Namen, aber mit dem Ergebnis von GetSymbolValueText
kann ich nichts anfangen. Hier bekomme ich immer den gleichen "Pointer" zusammen mit einem anderen Typnamen.Ich würde aber gerne wie in WinDbg sehen, dass ich da auf Nullpointern arbeite...
Tschüß, Holger.
Antworten
-
- Als Antwort markiert Holger Gothan Mittwoch, 3. April 2013 10:12
Alle Antworten
-
- Als Antwort markiert Holger Gothan Mittwoch, 3. April 2013 10:12