Systrace per Windows


85

Sto cercando un equivalente di Windows di Systrace o almeno di strace . Sono a conoscenza di StraceNT , ma mi chiedo se ci siano altre alternative là fuori. In particolare, sto cercando un modo specifico per applicare a livello di codice i criteri delle chiamate di sistema, anche se questo può essere dopo il fatto piuttosto che fermarli attivamente.

C'è un buon modo per farlo attualmente?


Risposte:


26

3
Tuttavia, è più simile a ltrace che a strace perché cattura le chiamate di libreria piuttosto che le chiamate di sistema.
Michael

@BrunoMartinez: non è necessario specificare un indirizzo di memoria per utilizzare strace.
user2284570

38

Alcune opzioni:

Monitor di processo

Inoltre, consulta questo articolo sugli strumenti integrati in Windows 7:

Strumenti del sistema operativo principale


3
Ho appena usato ProcessMonitor per scoprire perché un processo era in sospeso - risulta che stava tentando di accedere a un file che non poteva eliminare ... non l'avrei mai capito senza ProcMon
Jamie Cook

2
Uso strace un po 'su Linux e mi sono imbattuto in questa domanda mentre cercavo uno strumento simile su Windows per la risoluzione del problema che stavo avendo con NANT. Ho provato Process Monitor, impostato il filtro per includere solo Nant.exe ed escludendo tutto il resto, anche impostato il filtro per l'accesso al registro solo dove stavo avendo problemi e ho capito rapidamente il problema che stavo avendo. Consiglio vivamente Process Monitor.
hshib

@ djhaskin987: Nel mio caso ho un programma che carica alcuni file; bufferizzarli su ʀᴀᴍ (quindi non è rimasto alcun handle) e crash. Poiché non c'è alcuna maniglia sinistra, il monitor del processo non è di aiuto.
user2284570

@hshib: il problema con il monitor di processo è che un processo non necessita di un handle per accedere a un file. Quindi in un caso come il mio (cercando di vedere quale file di configurazione causa un arresto anomalo) , non è di aiuto.
user2284570

15

Lo strumento Dr. Memory ( http://drmemory.org ) viene fornito con uno strumento di tracciamento delle chiamate di sistema chiamato drstrace che elenca tutte le chiamate di sistema effettuate da un'applicazione di destinazione insieme ai loro argomenti: http://drmemory.org/strace_for_windows.html

Per applicare programmaticamente le policy delle chiamate di sistema, è possibile utilizzare gli stessi motori sottostanti di drstrace: la piattaforma degli strumenti DynamoRIO ( http://dynamorio.org ) e la libreria di monitoraggio delle chiamate di sistema DrSyscall ( http://drmemory.org/docs/page_drsyscall. html ). Questi utilizzano la tecnologia di traduzione binaria dinamica, che comporta un certo sovraccarico (20% -30% in stato stazionario, ma molto più alto quando si esegue nuovo codice come l'avvio di una grande app desktop), che può o non può essere adatto ai propri scopi.


11

API Monitor sembra molto utile per questo scopo.


Questo è un programma eccellente, mostra parametri dettagliati della funzione / valori di ritorno, ti permette di breakpoint quando sono soddisfatte determinate condizioni, molti metodi di hooking differenti in modo che possa essere usato su molti processi che non amano essere ispezionati.
yuikonnu


3

strace è disponibile da Cygwin nel pacchetto cygwin . Puoi scaricarlo da un mirror Cygwin , ad esempio:

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

strace è uno dei pochi programmi Cygwin che non si basa sulla DLL Cygwin, quindi dovresti essere in grado di copiare semplicemente strace.exedove vuoi e usarlo.


6
Va bene, ma sembra funzionare solo su altri programmi Cygwin. Non puoi strace notepad. Avvia il blocco note, ma non acquisisce alcuna chiamata di sistema.
Michael Fox

2
@MichaelFox: Sì, cattura solo le chiamate a cygwin1.dll.
user2284570

2

Ci sono diversi strumenti tutti costruiti attorno a Xperf. È piuttosto complesso ma molto potente: consulta la guida rapida . Sono disponibili altre risorse utili nella pagina Analisi delle prestazioni di Windows


4
strace non è correlato alle prestazioni. Stampa semplicemente le chiamate di sistema effettuate da un processo. Gli strumenti per le prestazioni non sembrano farlo.
Jan Hudec

1

strace supportato da Git , come menzionato da Michael Fox Forse non utile per software complessi / Windows.


0

È possibile utilizzare il monitor di processo scritto da Mark Russinovich. Questa è una fantastica piccola applicazione che ti permetterà di collegarti a qualsiasi processo in esecuzione sul sistema e vedere tutte le chiamate di sistema che il processo sta attualmente facendo.

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


2
djhaskin987 ha già menzionato Process Monitor nella sua risposta precedente. Dovresti modificare la sua risposta e modificare la tua descrizione in essa.
indimenticabileidSupportsMonica
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.