2017-12-04 2 views
0

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
die 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?

Antwort

0

Es scheint, dass die Debugger Probleme mit der CMap Definition hat, und durch die __ptr64 Einträge aus der Typdefinition zu entfernen (um den Raum zu Beginn der __ptr64 ausmacht), kann ich den Inhalt der Variablen finden Sie unter:

(CMap<int,int,CUIntArray *,CUIntArray *>*) 0x000000eab8748430 

Ich glaube, es gibt einen Fehler im Debugger :-)

+0

Vielen Dank für Ihre Lösung hier, Sie könnten es als die Antwort markieren. Einen schönen Tag noch :) –

+0

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

Verwandte Themen