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?

Bryan
quelle
Auch verwandt - stackoverflow.com/questions/864839/…
sashoalm

Antworten:

26

Die Logger.exe von WinDbg ist am nächsten an der Straße: http://msdn.microsoft.com/en-us/library/windows/hardware/ff552060(v=vs.85).aspx

EDIT: Es gibt auch das Gewicht von windbg: http://blogs.msdn.com/b/debuggingtoolbox/archive/2009/10/12/special-command-tracing-applications-using-wt.aspx

Bruno Martinez
quelle
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

djhaskin987
quelle
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.

Derek Bruening
quelle
11

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

Isaiah Norton
quelle
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
6

Hier ist ein ziemlich interessanter Artikel. Ich weiß nicht, ob er das gesuchte Ziel erreicht, aber ich denke, Sie werden ihn möglicherweise in die gewünschte Richtung führen.

http://jbremer.org/intercepting-system-calls-on-x86_64-windows/

w33mhz
quelle
1
Danke, das ist ziemlich gut. Ich denke, es bedeutet, dass wir unter Windows noch weit von einem schönen und funktionalen Problem entfernt sind ...
static_rtti
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.

Steven Penny
quelle
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

the_mandrill
quelle
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.

Zaman
quelle
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

Mike
quelle
2
djhaskin987 erwähnte Process Monitor bereits in seiner früheren Antwort. Sie sollten seine Antwort bearbeiten und Ihre Beschreibung darin bearbeiten.
unvergesslichidSupportsMonica