Wie kann ich einen Prozess in Windows verfolgen / profilieren?

3543
Martin Smith

Bei der Untersuchung von SQL Server-Problemen finde ich es gelegentlich hilfreich, den Visual Studio-Debugger daran anschließen zu können und zu versuchen, herauszufinden, was er tut, indem er sich den Aufrufstapel ansieht (die öffentlichen Symbole stehen zur Verfügung und es ist oft möglich, auf nützliche Informationen zu schließen Informationen aus den Methodennamen).

Ein großartiges Beispiel für die Art der Interna-Informationen, die abgeleitet werden können, ist in diesem Blogpost, der meine Versuche inspirierte.

Dies kann jedoch ein recht zeitaufwändiger und langwieriger Prozess sein. Im Allgemeinen führe ich den Code des Interesses in einer Schleife aus, füge den Debugger hinzu, biege dann ständig weiter und fahre fort, bis ich einen Aufrufstapel erreiche, der für die untersuchte Angelegenheit interessant aussieht. Ich kann dann den Code schrittweise durchgehen und die Methodennamen betrachten, die aufgerufen werden. Das dauert jedoch ewig.

Gibt es eine Möglichkeit, dies zu automatisieren, sodass ich einfach alle für einen kurzen Zeitraum aufgerufenen Methoden protokollieren und die Protokolldatei anschließend überprüfen kann?

2

2 Antworten auf die Frage

3
Maxwell S.

If I am not mistaken, you're probably looking for Process Monitor (a.k.a. procmon). You can get it from this Microsoft website.

Specifically the "Stack Summary" menu option has this kind of information. More details in section PM2-6: Unrolling the stack

enter image description here

Wie wäre es mit dem Prozess-Explorer, der viel leistungsfähiger ist ... http://technet.microsoft.com/de-de/sysinternals/bb896653 Moab vor 12 Jahren 1
@Moab - AFAIK Process Explorer kann die öffentlichen Symbole vom MS-Symbol-Server laden und den aktuellen Aufrufstack anzeigen, hat aber keine Möglichkeit, Anrufe im Laufe der Zeit zu protokollieren? Martin Smith vor 12 Jahren 1
@MartinSmith nicht sicher, ich bin leider kein Experte für die Verwendung dieser Software. Moab vor 12 Jahren 0
2
Martin Smith

Der Profiler in höheren Versionen von Visual Studio verwendet werden, dies zu tun.

Beispielausgabe

Screenshot

(Und die Antwort hier zeigt, warum das nützlich ist)

Oder zusätzlich ist das Windows Performance Toolkit kostenlos und kann genauso viel und noch mehr. Eine gute Videoserie hierzu finden Sie unter https://channel9.msdn.com/Search?term=Defrag%20tools%20wpt#ch9Search