VS-Tipps & Tricks: Tracepoints die zweite…
In meinen ersten Artikel zu Tracepoints habe ich ja auch erwähnt, dass man sehr einfach auch Variablen ausgeben kann. Das schöne ist, dass dies sofort auch für Iteratoren und manche andere Klasse funktioniert, ohne dass man spezielle Member angeben muss. Man setzt einfach die Variable in geschweifte Klammern. Und das dürfen auch komplexe Ausdrücke sein, wie im Debug-Watch-Fenster.
So führt die folgende Tracepoint Definition in einem meiner Programme:
$FUNCTION, {iCountry,x} {s_countries[iCountry]}
zu der folgenden Ausgabe:
wmain(int, wchar_t * *, wchar_t * *), 1 {m_szISO3=0x00487e48 “AUT” m_szISO2=0x00487e44 “AT” m_szCountryCode=0x00487e40 “43″ }
wmain(int, wchar_t * *, wchar_t * *), 2 {m_szISO3=0x00487e3c “AUS” m_szISO2=0x00487e38 “AU” m_szCountryCode=0x00487e34 “61″ }
Ein leider undokumentiertes Feature von Tracepoints ist jedoch, dass innerhalb der geschweiften Klammern auch die bekannten Formatierungen aus dem Debug-Watch-Fenster verwendet werden können. Wie hier zum Beispiel um die Ausgabe des Intergers in hexadezimal zu ändern:
$FUNCTION, {iCountry,x} {s_countries[iCountry]}
wmain(int, wchar_t * *, wchar_t * *), 0×00000001 {m_szISO3=0x00487e48 “AUT” m_szISO2=0x00487e44 “AT” m_szCountryCode=0x00487e40 “43″ }
wmain(int, wchar_t * *, wchar_t * *), 0×00000002 {m_szISO3=0x00487e3c “AUS” m_szISO2=0x00487e38 “AU” m_szCountryCode=0x00487e34 “61″ }
Besonders ist das interessant, wenn Fensterprozeduren tracen möchte ohne das Trace-Tool oder Spy++ verwenden will und man die Formatspezifkation wm verwendet und alle Fensternachrichten im Klartext lesen kann. Oder man verwendet hr und sieht auch einen HRESULT nicht mehr nur als kryptische Zahl.
Link für diesen Beitrag | RSS-Feed zu diesem Beitrag
Hinterlassen sie einen Kommentar:
Beachten sie bitte, dass Kommentare evtl. nicht sofort hier erscheinen. Die Kommentare werden zur Moderation an den Webmaster gesendet. Es kann also etwas dauern, bis Ihr Kommentar hier veröffentlicht wird!