2010-10-02 8 views
68

Estoy buscando un equivalente de Windows de Systrace o al menos strace. Estoy al tanto de StraceNT, pero me pregunto si hay más alternativas disponibles. Específicamente, estoy buscando una forma específica de aplicar programáticamente las políticas de llamadas del sistema, aunque esto puede ser después del hecho en lugar de detenerlos activamente.Systrace para Windows

¿Hay una buena manera de hacer esto actualmente?

+0

También se ha relacionado - http: // stackoverflow.com/questions/864839/monitoring-certain-system-calls-done-by-a-process-in-windows – sashoalm

Respuesta

19
+3

Sin embargo, es más como rastrear que rápido porque captura llamadas de biblioteca en lugar de llamadas de sistema. – Michael

+0

@BrunoMartinez: no necesita especificar una dirección de memoria para usar strace. – user2284570

30

algunas opciones:

Process Monitor

También, ver este artículo acerca de las herramientas integradas en Windows 7:

Core OS Tools

+3

Acabo de utilizar ProcessMonitor para descubrir por qué se colgaba un proceso, resulta que estaba intentando acceder a un archivo que no pude borrar ... nunca lo hubiera averiguado sin ProcMon –

+2

Utilizo bastante Strace en Linux y me encontré con esta pregunta mientras buscaba una herramienta similar en Windows para solucionar el problema que estaba teniendo con NANT. Intenté Process Monitor, establecí el filtro para incluir solo Nant.exe y excluí todo lo demás, también establecí el filtro para el acceso de registro solo donde tenía problemas y rápidamente resolví el problema que estaba teniendo. Recomiendo Process Monitor. – hshib

+0

@ djhaskin987: en mi caso tengo un programa que carga algunos archivos; búfer en ʀᴀᴍ * (para que no quede asa) * y bloqueo. Como no hay mango, el monitor del proceso izquierdo no es de ayuda. – user2284570

0

Hay varias herramientas todas ellas construidas en torno Xperf. Es bastante complejo pero muy poderoso: consulta quick start guide. Hay otros recursos útiles en la página Windows Performance Analysis

+4

strace no está relacionado con el rendimiento. Simplemente imprime qué sistema llama un proceso. Las herramientas de rendimiento no parecen hacer eso. –

4

Aquí es un artículo muy intersting, I don' Sé si llega al objetivo que estás buscando, pero creo que es posible que lo encuentres en la dirección que deseas.

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

+1

Gracias, eso es bastante bueno. Supongo que significa que todavía estamos muy lejos de una carrera agradable y funcional en Windows ... –

9

El Dr. memoria (http://drmemory.org) herramienta viene con una llamada al sistema trazando herramienta llamada drstrace que enumera todas las llamadas del sistema realizados por una aplicación de destino, junto con sus argumentos: http://drmemory.org/strace_for_windows.html

Para el sistema de aplicación de programación políticas de llamada, puede utilizar los mismos motores subyacentes que drstrace: la plataforma de herramientas DynamoRIO (http://dynamorio.org) y la biblioteca de supervisión de llamadas del sistema DrSyscall (http://drmemory.org/docs/page_drsyscall.html). Estos utilizan tecnología de traducción binaria dinámica, que incurre en gastos indirectos (20% -30% en estado estable, pero mucho más altos cuando ejecuta un nuevo código, como el lanzamiento de una gran aplicación de escritorio), lo que puede o no ser adecuado para sus propósitos.

4

API Monitor parece muy útil para este propósito.

+0

Este es un programa excelente, muestra parámetros de función detallados/valores de retorno, le permite un punto de interrupción cuando se cumplen ciertas condiciones, muchos enlaces diferentes método para que pueda ser utilizado en muchos procesos que no les gusta ser inspeccionados. – asdasd

2

strace está disponible de Cygwin en el cygwin package. Puede descargarlo de un Cygwin mirror, por ejemplo:

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

strace es uno de los pocos programas de Cygwin que no se basan en la DLL de Cygwin, lo que debería ser capaz de simplemente copiar strace.exe a la que desea y usarlo.

+2

Es bueno, pero solo parece funcionar en otros programas de cygwin. No se puede 'strace notepad'. Lanza el bloc de notas, pero no captura ninguna llamada al sistema. –

+2

@MichaelFox: Sí, solo atrapa las llamadas a cygwin1.dll. – user2284570

0

Puede usar el monitor de procesos escrito por Mark Russinovich. Esta es una pequeña aplicación fantástica que le permitirá conectarse a cualquier proceso en ejecución en el sistema y ver todas las llamadas al sistema que ese proceso está realizando actualmente.

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

+0

djhaskin987 ya mencionado Process Monitor en su respuesta anterior. Debe editar su respuesta y editar su descripción en ella. – unforgettableid