Ich arbeite immer noch mit dem gleichen Skript, ich erwähnte in this other StackOverflow post.
Allgemeine Idee:Wie sehe ich ein CMap (CArray) -Objekt, basierend auf seiner Speicheradresse
- ein dumpfile öffnen, ein Skript
- die Speicheradressen aller Variablen betrachten
- versuchen, einige Informationen
dt
Funktion scheint
Dieses Mal zu erhalten auf einem CMap-Objekt fehlschlagen:
dt <application_name>!CMap<int,int,CUIntArray * __ptr64,CUIntArray * __ptr64> m_nCount 000000eab8748430
Ambiguous matches found for <application_name>!CMap<int,int,CUIntArray * __ptr64,CUIntArray * __ptr64> (dumping largest sized):
<application_name>!CMap<int,int,CUIntArray * __ptr64,CUIntArray * __ptr64>::~CMap<int,int,CUIntArray * __ptr64,CUIntArray * __ptr64>
<application_name>!CMap<int,int,CUIntArray * __ptr64,CUIntArray * __ptr64>::CMap<int,int,CUIntArray * __ptr64,CUIntArray * __ptr64> {0x02b bytes}
Um dies zu lösen, habe ich versucht, das Objekt in Visual Studio-Uhr-Fenster zu öffnen, aber dies scheint unabhängig davon, was ich versuche, in Ermangelung zu:
scheint(CMap<int,int,CUIntArray * __ptr64,CUIntArray * __ptr64>)0x000000eab8748430 => identifier "CMap..." is undefined
(CMap)0x000000eab8748430 => identifier "CMap" is undefined
(<application_name>!CMap<int,int,CUIntArray * __ptr64,CUIntArray * __ptr64>)0x000000eab8748430 => identifier "<application_name>" is undefined
(mfc110u!CMap<int,int,CUIntArray * __ptr64,CUIntArray * __ptr64>)0x000000eab8748430 => identifier "mfc110u" is undefined
...
jedoch diese Arbeitsweise zu arbeiten, für andere STL-Klassen, wie CStringArray
:
(CStringArray*)0x000000eab87c6d10 => this is giving good results
weiß jemand, wie ich eine CMap (oder CArray) Objekt in Wacht Fenster Visual Studio, basierend auf seiner Speicheradresse zeigen kann?
Vielen Dank für Ihre Lösung hier, Sie könnten es als die Antwort markieren. Einen schönen Tag noch :) –
Es gibt nur eine Sache, die ich noch nicht herausgefunden habe: hat der Debugger ein Problem mit '__ptr64' im Speziellen oder mit der Tatsache, dass die Typdefinition zwei Dinge' CUIntArray' und '__ptr64' enthält, Das ist noch zu untersuchen, aber ich habe gerade keine anderen Fälle. – Dominique