Systrace para Windows


87

Estou procurando um equivalente do Windows para Systrace ou pelo menos strace . Estou ciente do StraceNT , mas me perguntando se há mais alternativas por aí. Especificamente, estou procurando uma maneira específica de impor políticas de chamada do sistema de forma programática, embora isso possa ser depois do fato, em vez de interrompê-las ativamente.

Existe uma boa maneira de fazer isso atualmente?


Respostas:


28

4
No entanto, é mais parecido com ltrace do que strace porque captura chamadas de biblioteca em vez de syscalls.
Michael

@BrunoMartinez: você não precisa especificar um endereço de memória para usar o strace.
user2284570

41

Algumas opções:

Monitor de Processo

Além disso, consulte este artigo sobre ferramentas integradas ao Windows 7:

Ferramentas principais do sistema operacional


3
Acabei de usar o ProcessMonitor para descobrir por que um processo estava travando - ele estava tentando acessar um arquivo que não pôde ser excluído ... nunca teria descoberto sem o ProcMon
Jamie Cook

2
Eu uso bastante o strace no Linux e me deparei com essa pergunta enquanto procurava uma ferramenta semelhante no Windows para solucionar o problema que eu estava tendo com o NANT. Tentei o Monitor de processo, configurei o filtro para incluir apenas Nant.exe e excluindo todo o resto, também configurei o filtro para registrar acesso apenas onde eu estava tendo problemas e descobri rapidamente o problema que eu estava tendo. Eu recomendo o Process Monitor.
hshib

@ djhaskin987: No meu caso, tenho um programa que carrega alguns arquivos; armazene-os em ʀᴀᴍ (para que não haja nenhum identificador à esquerda) e travar. Como não há alça esquerda, o monitor de processo não ajuda.
user2284570

@hshib: o problema com o monitor de processo é um processo que não precisa de um identificador para acessar um arquivo. Portanto, em um caso como o meu (tentar ver qual arquivo de configuração causa o travamento) , não adianta.
user2284570

15

A ferramenta Dr. Memory ( http://drmemory.org ) vem com uma ferramenta de rastreamento de chamada de sistema chamada drstrace que lista todas as chamadas de sistema feitas por um aplicativo de destino junto com seus argumentos: http://drmemory.org/strace_for_windows.html

Para impor políticas de chamada de sistema de forma programática, você pode usar os mesmos engines subjacentes do drstrace: a plataforma de ferramentas DynamoRIO ( http://dynamorio.org ) e a biblioteca de monitoramento de chamadas de sistema DrSyscall ( http://drmemory.org/docs/page_drsyscall. html ). Eles usam a tecnologia de tradução binária dinâmica, que incorre em alguma sobrecarga (20% -30% em estado estacionário, mas muito maior ao executar um novo código, como iniciar um grande aplicativo de desktop), que pode ou não ser adequado para seus propósitos.


11

O API Monitor parece muito útil para esse propósito.


Este é um programa excelente, mostra parâmetros de função / valores de retorno detalhados, permite que você faça um breakpoint quando certas condições forem atendidas, muitos métodos de hooking diferentes para que possa ser usado em muitos processos que não gostam de ser inspecionados.
yuikonnu


3

strace está disponível no Cygwin no pacote cygwin . Você pode baixá-lo de um espelho Cygwin , por exemplo:

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

strace é um dos poucos programas Cygwin que não depende do Cygwin DLL, então você deve ser capaz de apenas copiar strace.exepara onde quiser e usá-lo.


7
É bom, mas parece funcionar apenas em outros programas cygwin. Você não pode strace notepad. Ele inicia o bloco de notas, mas não captura nenhuma chamada do sistema.
Michael Fox

3
@MichaelFox: Sim, ele apenas captura chamadas para cygwin1.dll.
user2284570

2

Existem várias ferramentas criadas em torno do Xperf. É bastante complexo, mas muito poderoso - consulte o guia de início rápido . Existem outros recursos úteis na página Análise de Desempenho do Windows


4
strace não está relacionado ao desempenho. Ele simplesmente imprime quais chamadas de sistema um processo faz. As ferramentas de desempenho parecem não fazer isso.
Jan Hudec

1

strace suportado por Git , como Michael Fox Mention Talvez não seja útil para software complexo / windows.


1
Esse é o programa Linux. Ele só funciona com software / syscalls Linus.
Henk Poley

0

Você pode usar o monitor de processo escrito por Mark Russinovich. Este é um pequeno aplicativo fantástico que permitirá que você se conecte a qualquer processo em execução no sistema e veja todas as chamadas de sistema que o processo está fazendo atualmente.

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


3
djhaskin987 já mencionou o Process Monitor em sua resposta anterior. Você deve editar sua resposta e editar sua descrição nela.
inesquecívelidSupportsMonica
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.