Wie bekomme ich einen StackTrace von C ++ in WinRT?

8

Ich muss einen StackTrace von einer C ++ - Anwendung erhalten und ihn in eine Zeichenfolge serialisieren, damit er später analysiert werden kann. Die einzige API, die ich dafür unter Windows gehört habe, ist StackWalk64, die anscheinend nicht unterstützt wird.

Wie kann ich einen StackTrace von C ++ in einer Windows Store App erhalten?

    
Earlz 31.01.2013, 18:32
quelle

2 Antworten

1

Die einzige Möglichkeit, komplexe WINRT-Probleme zu debuggen, besteht darin, ETW zur Verfolgung von Kausalketten zu verwenden. Während der Installation etwas mühsam ist Dieser Artikel (mit Bezug auf c #) hebt die Methode hervor:

Hier sind ein paar anständige Einführung in ETW für C / C ++.

Wenn Sie diese Methode verwenden, sollten Sie in der Lage sein, ETW-Ereignisse zu erstellen, sie dann in der App anzuhören und sie als serialisierte Zeichenfolge zur späteren Analyse hinzuzufügen.

    
Matt Johnson 29.04.2013 15:36
quelle
0

Was für mich funktionierte, ist asm code wie unten. Dies funktioniert nur auf der x86-Plattform, daher ist es nur während des Debuggens auf dem Emulator nützlich. Zurückgegebene Rahmenzeiger können im Demontagefenster verwendet werden, um in den Quellcode zu springen. Ich denke, dass es möglich sein sollte, Kartendatei zu verwenden, um genauen Quellcodeort zu erhalten.

Ich benutze diesen Code um Speicherlecks zu finden, kombiniert mit crtdbg funktioniert es sehr gut in sehr großen Anwendungen mit vielen Zuweisungen. VS 2013 Speicher Profiler könnte höchstens 1 Minute Datenerfassung verarbeiten.

%Vor%     
marcinj 08.07.2015 18:41
quelle