Systrace для Windows


85

Я шукаю еквівалент Windows для Systrace або принаймні strace . Мені відомо про StraceNT , але мені цікаво, чи є ще якісь альтернативи. Зокрема, я шукаю конкретний спосіб програмного забезпечення політики системних викликів, хоча це може бути фактично, а не активно зупиняти їх.

Чи є зараз хороший спосіб зробити це?


Також в зв'язку - stackoverflow.com/questions/864839 / ...
sashoalm

Відповіді:


26

3
Однак це більше схоже на ltrace, ніж на strace, оскільки воно фіксує виклики бібліотеки, а не сискали.
Майкл

@BrunoMartinez: вам не потрібно вказувати адресу пам'яті для використання strace.
user2284570

40

Кілька варіантів:

Монітор процесів

Також див. Цю статтю про інструменти, вбудовані в Windows 7:

Основні інструменти ОС


3
Я просто використовував ProcessMonitor, щоб з'ясувати, чому процес зависає - виявляється, він намагався отримати доступ до файлу, який він не міг видалити ... ніколи б цього не зрозумів без ProcMon
Jamie Cook

2
Я досить багато використовую strace в Linux і зіткнувся з цим запитанням, шукаючи подібний інструмент у Windows для усунення неполадок, які виникали у мене з NANT. Я спробував Process Monitor, встановив фільтр, щоб включати лише Nant.exe та виключаючи все інше, також встановив фільтр для доступу до реєстру лише там, де у мене були проблеми, і швидко з’ясував проблему, яку мав. Я настійно рекомендую Process Monitor.
hshib

@ djhaskin987: У моєму випадку у мене є програма, яка завантажує деякі файли; буфер їх до ʀᴀᴍ (так що не залишилося дескриптора) і аварійне завершення роботи . Оскільки немає ручки, що залишилася, монітор процесу не допоможе.
user2284570

@hshib: проблема монітора процесів полягає в тому, що для доступу до файлу процесу не потрібен дескриптор. Тож у такому випадку, як мій (намагаючись з’ясувати, який конфігураційний файл спричиняє збій) , це не допоможе.
user2284570

15

Інструмент 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% у стабільному стані, але набагато вище при запуску нового коду, наприклад, запуску великого настільного додатка), яка може бути чи не підходить для ваших цілей.


11

API Monitor для цього виглядає дуже корисним.


Це відмінна програма, показує детальні параметри функції / повернені значення, дозволяє точку зупинки при дотриманні певних умов, безліч різних методів підключення, тому її можна використовувати в багатьох процесах, які не люблять перевірятися.
yuikonnu

6

Ось досить цікава стаття, я не знаю, чи вона потрапляє в ціль, яку ви шукаєте, але я думаю, ви можете виявити, що вона веде вас у потрібному напрямку.

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


1
Дякую, це досить добре. Думаю, це означає, що ми ще далеко від приємної та функціональної ситуації у Windows ...
static_rtti

3

strace можна придбати від Cygwin в упаковці cygwin . Ви можете завантажити його з дзеркала Cygwin , наприклад:

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

strace - одна з небагатьох програм Cygwin, яка не покладається на Cygwin DLL, тому ви повинні мати можливість просто копіювати strace.exeтуди, де хочете, і використовувати її.


6
Це добре, але, схоже, це працює лише в інших програмах cygwin. Ви не можете strace notepad. Він запускає блокнот, але не фіксує жодних системних дзвінків.
Майкл Фокс

2
@MichaelFox: Так, він ловить лише дзвінки на cygwin1.dll.
user2284570

2

Навколо Xperf побудовано кілька інструментів. Це досить складно, але дуже ефективно - див. Короткий посібник із початку . На сторінці аналізу продуктивності Windows є інші корисні ресурси


4
страйс не пов'язаний з продуктивністю. Він просто друкує те, що називає система, яку робить процес. Здається, інструменти продуктивності цього не роблять.
Ян Худек,

1

strace підтримується Git , як згадує Майкл Фокс Можливо, не корисний для складних програм / програм Windows.


Це програма Linux. Він функціонує лише за допомогою програмного забезпечення / системних дзвінків Linus.
Хенк Полі

0

Ви можете використовувати монітор процесів, написаний Марком Руссіновичем. Це фантастичний невеликий додаток, який дозволить вам підключитися до будь-якого запущеного процесу в системі та побачити всі системні виклики, які цей процес здійснює в даний час.

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


2
djhaskin987 вже згадував Process Monitor у своїй попередній відповіді. Ви повинні відредагувати його відповідь і відредагувати свій опис.
unforgettableidSupportsMonica
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.