Systrace для Windows
Я ищу эквивалент Windows Systrace или по крайней мере strace. Я знаю
StraceNT, но интересно, есть ли еще альтернативы там. В частности, я ищу конкретный способ программного обеспечения политик системных вызовов, хотя это может происходить после факта, а не активно останавливать их.
Есть ли хороший способ сделать это сейчас?
Ответы
Ответ 1
WinDbg Logger.exe находится ближе всего к strace: http://msdn.microsoft.com/en-us/library/windows/hardware/ff552060(v=vs.85).aspx
EDIT: там также windbg wt: http://blogs.msdn.com/b/debuggingtoolbox/archive/2009/10/12/special-command-tracing-applications-using-wt.aspx
Ответ 2
Несколько вариантов:
Process Monitor
Также см. эту статью о инструментах, встроенных в Windows 7:
Основные инструменты ОС
Ответ 3
Инструмент Dr. Memory (http://drmemory.org) поставляется с инструментом отслеживания системных вызовов под названием drstrace, в котором перечислены все системные вызовы, сделанные целевой приложение вместе со своими аргументами: http://drmemory.org/strace_for_windows.html
Для программного обеспечения политик системных вызовов вы можете использовать те же базовые модули, что и drstrace: платформа инструментов DynamoRIO (http://dynamorio.org) и Библиотека мониторинга системных вызовов DrSyscall (http://drmemory.org/docs/page_drsyscall.html). Они используют технологию динамического бинарного перевода, которая наносит некоторые накладные расходы (20% -30% в устойчивом состоянии, но намного выше при запуске нового кода, например, запуск большого приложения для настольных компьютеров), что может быть или не быть подходящим для ваших целей.
Ответ 4
API Monitor выглядит очень полезным для этой цели.
Ответ 5
Вот довольно интересная статья, я не знаю, попадает ли она в цель, которую вы ищете, но я думаю, что вы можете найти ее, ведущую вас в нужном вам направлении.
http://jbremer.org/intercepting-system-calls-on-x86_64-windows/
Ответ 6
strace можно получить у Cygwin в пакете cygwin . Вы можете скачать его
из Cygwin mirror, например:
http://mirrors.sonic.net/cygwin/x86_64/release/cygwin/cygwin-2.0.2-1.tar.xz
# | | | |
# +-----------+----------+ +--+--+
# | |
# mirror version
strace - одна из немногих программ Cygwin, которая не полагается на Cygwin DLL,
поэтому вы должны просто скопировать strace.exe
туда, где хотите, и использовать его.
Ответ 7
Существует несколько инструментов, построенных вокруг Xperf. Он довольно сложный, но очень мощный - см. краткое руководство по началу работы. На странице "Анализ производительности Windows" есть другие полезные ресурсы
Ответ 8
Вы можете использовать монитор процессов, написанный Марком Руссиновичем. Это фантастическое приложение, которое позволит вам подключаться к любому запущенному процессу в системе и видеть все системные вызовы, которые этот процесс в настоящее время делает.
https://technet.microsoft.com/en-us/sysinternals/processmonitor.aspx
Ответ 9
Strace поддерживается Git, как упомянул Майкл Фокс. Может быть, бесполезен для сложных программ /windows.