Systrace für Windows


85

Ich suche ein Windows-Äquivalent von Systrace oder zumindest strace . Ich kenne StraceNT , frage mich aber, ob es da draußen noch weitere Alternativen gibt. Insbesondere suche ich nach einer bestimmten Möglichkeit, Systemaufrufrichtlinien programmgesteuert durchzusetzen, obwohl dies nachträglich erfolgen kann, anstatt sie aktiv zu stoppen.

Gibt es derzeit einen guten Weg, dies zu tun?


Antworten:


26

3
Es ist jedoch eher ltrace als strace, da es Bibliotheksaufrufe und nicht Syscalls erfasst.
Michael

@BrunoMartinez: Sie müssen keine Speicheradresse für die Verwendung von strace angeben.
user2284570

38

Einige Optionen:

Prozessmonitor

Lesen Sie auch diesen Artikel über in Windows 7 integrierte Tools:

Core OS Tools


3
Ich habe gerade ProcessMonitor verwendet, um herauszufinden, warum ein Prozess hängt - es stellte sich heraus, dass versucht wurde, auf eine Datei zuzugreifen, die nicht gelöscht werden konnte ... hätte es ohne ProcMon nie herausgefunden
Jamie Cook

2
Ich verwende strace ziemlich oft unter Linux und bin auf diese Frage gestoßen, als ich nach einem ähnlichen Tool unter Windows gesucht habe, um das Problem mit NANT zu beheben. Ich habe Process Monitor ausprobiert, den Filter so eingestellt, dass er nur Nant.exe enthält und alles andere ausschließt. Außerdem habe ich den Filter für den Registerzugriff nur dort festgelegt, wo ich Probleme hatte, und schnell herausgefunden, welches Problem ich hatte. Ich kann Process Monitor nur empfehlen.
Hshib

@ djhaskin987: In meinem Fall habe ich ein Programm, das einige Dateien lädt; Puffern Sie sie auf ʀᴀᴍ (es ist also kein Griff mehr vorhanden) und stürzen Sie ab. Da kein Handle mehr vorhanden ist, ist der Prozessmonitor keine Hilfe.
user2284570

@hshib: Das Problem mit dem Prozessmonitor ist, dass ein Prozess kein Handle benötigt, um auf eine Datei zuzugreifen. In einem Fall wie meinem (der versucht herauszufinden, welche Konfigurationsdatei einen Absturz verursacht) ist dies keine Hilfe.
user2284570

15

Das Dr. Gedächtnis ( Tool http://drmemory.org ) enthält ein Systemaufruf-Tracing-Tool namens drstrace, das alle von einer Zielanwendung getätigten Systemaufrufe zusammen mit ihren Argumenten auflistet: http://drmemory.org/strace_for_windows.html

Zum programmgesteuerten Durchsetzen von Systemaufrufrichtlinien können Sie dieselben zugrunde liegenden Engines wie drstrace verwenden: die DynamoRIO-Toolplattform ( http://dynamorio.org ) und die DrSyscall-Bibliothek zur Überwachung von Systemaufrufen ( http://drmemory.org/docs/page_drsyscall). html ). Diese verwenden eine dynamische binäre Übersetzungstechnologie, die einen gewissen Overhead verursacht (20% -30% im eingeschwungenen Zustand, aber viel höher, wenn neuer Code ausgeführt wird, z. B. das Starten einer großen Desktop-App), der für Ihre Zwecke geeignet sein kann oder nicht.


11

API Monitor sieht für diesen Zweck sehr nützlich aus.


Dies ist ein ausgezeichnetes Programm, das detaillierte Funktionsparameter / Rückgabewerte anzeigt, es Ihnen ermöglicht, einen Haltepunkt zu setzen, wenn bestimmte Bedingungen erfüllt sind, und viele verschiedene Verbindungsmethoden, sodass es für viele Prozesse verwendet werden kann, die nicht überprüft werden möchten.
Yuikonnu


3

strace ist bei Cygwin im Cygwin-Paket erhältlich . Sie können es beispielsweise von einem Cygwin-Spiegel herunterladen :

http://mirrors.sonic.net/cygwin/x86_64/release/cygwin/cygwin-2.0.2-1.tar.xz
#      |                      |                              |     |
#      +-----------+----------+                              +--+--+
#                  |                                            |
#               mirror                                       version

strace ist eines der wenigen Cygwin-Programme, das nicht auf der Cygwin-DLL basiert. Sie sollten also in der Lage sein, einfach dorthin zu kopieren strace.exe, wo Sie möchten, und es zu verwenden.


6
Es ist gut, scheint aber nur bei anderen Cygwin-Programmen zu funktionieren. Das kannst du nicht strace notepad. Es startet den Editor, erfasst jedoch keine Systemaufrufe.
Michael Fox

2
@MichaelFox: Ja, es werden nur Aufrufe von cygwin1.dll abgefangen.
user2284570

2

Es gibt verschiedene Tools, die alle auf Xperf basieren. Es ist ziemlich komplex, aber sehr leistungsfähig - siehe die Kurzanleitung . Es gibt andere nützliche Ressourcen auf der Windows - Performance - Analyse Seite


4
Strace hat nichts mit Leistung zu tun. Es wird einfach gedruckt, welche Systemaufrufe ein Prozess ausführt. Die Performance-Tools scheinen das nicht zu tun.
Jan Hudec

1

strace unterstützt von Git , als Michael Fox Erwähnung Vielleicht nicht nützlich für komplexe / Windows-Software.


0

Sie können den von Mark Russinovich geschriebenen Prozessmonitor verwenden. Dies ist eine fantastische kleine Anwendung, mit der Sie eine Verbindung zu jedem laufenden Prozess auf dem System herstellen und alle Systemaufrufe anzeigen können, die dieser Prozess derzeit ausführt.

https://technet.microsoft.com/en-us/sysinternals/processmonitor.aspx


2
djhaskin987 erwähnte Process Monitor bereits in seiner früheren Antwort. Sie sollten seine Antwort bearbeiten und Ihre Beschreibung darin bearbeiten.
unvergesslichidSupportsMonica
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.