Systrace pour Windows


85

Je recherche un équivalent Windows de Systrace ou du moins strace . Je connais StraceNT , mais je me demande s'il existe d'autres alternatives. Plus précisément, je recherche un moyen spécifique d'appliquer par programme les stratégies d'appel système, bien que cela puisse être après le fait plutôt que de les arrêter activement.

Existe-t-il actuellement un bon moyen de le faire?


Réponses:


26

3
Cependant, cela ressemble plus à ltrace qu'à strace car il capture les appels de bibliothèque plutôt que les appels système.
Michael

@BrunoMartinez: vous n'avez pas besoin de spécifier une adresse mémoire pour utiliser strace.
user2284570

38

Quelques options:

Moniteur de processus

Consultez également cet article sur les outils intégrés à Windows 7:

Outils du système d'exploitation de base


3
Je viens d'utiliser ProcessMonitor pour savoir pourquoi un processus se bloque - il s'avère qu'il essayait d'accéder à un fichier qu'il ne pouvait pas supprimer ... je ne l'aurais jamais compris sans ProcMon
Jamie Cook

2
J'utilise assez souvent strace sous Linux et je suis tombé sur cette question en cherchant un outil similaire sur Windows pour résoudre le problème que j'avais avec NANT. J'ai essayé Process Monitor, défini le filtre pour n'inclure que Nant.exe et excluant tout le reste, également défini un filtre pour l'accès au registre uniquement là où j'avais un problème, et j'ai rapidement compris le problème que j'avais. Je recommande vivement Process Monitor.
hshib

@ djhaskin987: Dans mon cas, j'ai un programme qui charge certains fichiers; tamponnez-les sur ʀᴀᴍ (il n'y a donc plus de poignée) et plantez. Comme il n'y a pas de poignée gauche, le moniteur de processus n'aide pas.
user2284570

@hshib: le problème avec le moniteur de processus est qu'un processus n'a pas besoin d'un handle pour accéder à un fichier. Donc, dans un cas comme le mien (essayer de voir quel fichier de configuration cause un crash) , cela n'aide pas.
user2284570

15

L' outil Dr. Memory ( http://drmemory.org ) est livré avec un outil de suivi des appels système appelé drstrace qui répertorie tous les appels système effectués par une application cible avec leurs arguments: http://drmemory.org/strace_for_windows.html

Pour appliquer par programme les stratégies d'appel système, vous pouvez utiliser les mêmes moteurs sous-jacents que drstrace: la plateforme d'outils DynamoRIO ( http://dynamorio.org ) et la bibliothèque de surveillance des appels système DrSyscall ( http://drmemory.org/docs/page_drsyscall. html ). Celles-ci utilisent une technologie de traduction binaire dynamique, qui entraîne des frais généraux (20% à 30% en régime permanent, mais beaucoup plus élevée lors de l'exécution d'un nouveau code, comme le lancement d'une grande application de bureau), qui peut ou non convenir à vos besoins.


11

API Monitor semble très utile à cet effet.


C'est un excellent programme, montre des paramètres de fonction détaillés / valeurs de retour, vous permet de faire un point d'arrêt lorsque certaines conditions sont remplies, de nombreuses méthodes d'accrochage différentes afin qu'il puisse être utilisé sur de nombreux processus qui n'aiment pas être inspectés.
yuikonnu


3

strace est disponible auprès de Cygwin dans le package cygwin . Vous pouvez le télécharger depuis un miroir Cygwin , par exemple:

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

strace est l'un des rares programmes Cygwin qui ne repose pas sur la DLL Cygwin, vous devriez donc pouvoir simplement copier strace.exelà où vous le souhaitez et l'utiliser.


6
C'est bien, mais ne semble fonctionner que sur d'autres programmes cygwin. Vous ne pouvez pas strace notepad. Il lance le bloc-notes, mais ne capture aucun appel système.
Michael Fox

2
@MichaelFox: Oui, il n'attrape que les appels à cygwin1.dll.
user2284570


1

strace supporté par Git , comme Michael Fox Mention Peut-être pas utile pour les logiciels complexes / windows.


0

Vous pouvez utiliser le moniteur de processus écrit par Mark Russinovich. C'est une fantastique petite application qui vous permettra de vous connecter à n'importe quel processus en cours d'exécution sur le système et de voir tous les appels système que ce processus effectue actuellement.

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


2
djhaskin987 a déjà mentionné Process Monitor dans sa réponse précédente. Vous devez modifier sa réponse et y modifier votre description.
inoubliableidSupportsMonica
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.