2010-10-02 20 views
68

Szukam odpowiednika systemu Windows Systrace lub co najmniej strace. Jestem świadomy StraceNT, ale zastanawiam się, czy istnieje więcej alternatyw. W szczególności szukam konkretnego sposobu programowego egzekwowania zasad wywołań systemowych, choć może to być po fakcie, zamiast aktywnie je zatrzymywać.Systrace dla systemu Windows

Czy jest to obecnie dobry sposób na zrobienie tego?

+0

związane także - http: // stackoverflow.com/questions/864839/monitoring-sure-system-calls-done-by-process-in-windows – sashoalm

Odpowiedz

19
+3

Jednak jest bardziej podobny do ltrace niż strace, ponieważ przechwytuje wywołania biblioteki, a nie syscalls. – Michael

+0

@BrunoMartinez: nie musisz określać adresu pamięci do używania strace. – user2284570

30

Kilka opcji:

Process Monitor

Ponadto, zobacz ten artykuł na temat narzędzi wbudowanych w Windows 7:

Core OS Tools

+3

Po prostu użyłem ProcessMonitora, aby dowiedzieć się, dlaczego proces się zawiesił - okazało się, że próbował uzyskać dostęp do pliku, który nie mogłem usunąć ... nigdy by się nie zorientowałem bez ProcMon'a –

+2

Używam trochę strace'a w Linuksie i natknąłem się na to pytanie, szukając podobnego narzędzia w systemie Windows, aby rozwiązać problem, który miałem z NANT. Próbowałem Process Monitor, ustaw filtr tak, aby zawierał tylko Nant.exe i wykluczał wszystko inne, ustaw filtr dla dostępu do rejestru tylko tam, gdzie miałem problem, i szybko znajdź problem, który miałem. Gorąco polecam Monitor procesu. – hshib

+0

@ djhaskin987: W moim przypadku mam program, który ładuje niektóre pliki; buforuj je do ʀᴀᴍ * (więc nie ma już uchwytu) * i awarię. Ponieważ nie ma już uchwytu, monitor procesu nie jest pomocny. – user2284570

0

Istnieje kilka narzędzi zbudowane wokół Xperf. Jest dość skomplikowany, ale bardzo silny - patrz: quick start guide. Istnieją inne przydatne zasoby na stronie Windows Performance Analysis

+4

strace nie ma związku z wydajnością. Po prostu wypisuje, które wywołania systemu dokonuje proces. Narzędzia wydajności nie wydają się tego robić. –

4

Oto całkiem ciekawych artykuł, I don” t wiedzieć, czy trafi w cel, którego szukasz, ale myślę, że możesz go znaleźć w kierunku, w którym chcesz.

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

+1

Dzięki, to całkiem nieźle. Myślę, że to oznacza, że ​​nadal jesteśmy daleko od ładnego i funkcjonalnego strita w systemie Windows ... –

9

Pamięć dr (http://drmemory.org) narzędzie pochodzi z połączenia systemu śledzenia narzędzie o nazwie drstrace który wymienia wszystkie wywołania systemowe, dokonane przez docelowej aplikacji wraz z ich argumentami: http://drmemory.org/strace_for_windows.html

Dla programowo systemu egzekwowania polityki połączeń, można użyć tych samych podstawowych silników, co drstrace: platforma narzędziowa DynamoRIO (http://dynamorio.org) i biblioteka monitorowania wywołania systemowego DrSyscall (http://drmemory.org/docs/page_drsyscall.html). Wykorzystują one dynamiczną technologię tłumaczenia binarnego, która powoduje pewne koszty ogólne (20% -30% w stanie ustalonym, ale znacznie wyższe przy uruchamianiu nowego kodu, na przykład przy uruchamianiu dużej aplikacji komputerowej), co może, ale nie musi być odpowiednie dla twoich celów.

4

API Monitor wygląda bardzo przydatny do tego celu.

+0

To jest doskonały program, pokazuje szczegółowe funkcje params/return wartości, pozwala na przełamanie, gdy pewne warunki są spełnione, wiele różnych zahaczenia Metoda ta może być używana w wielu procesach, które nie lubią być sprawdzane. – asdasd

2

strace jest dostępny z Cygwin w cygwin package. Można go pobrać z Cygwin mirror, na przykład:

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

strace to jeden z niewielu programów Cygwin, które nie opierają się na Cygwin DLL, więc powinien być w stanie po prostu skopiować strace.exe tam, gdzie chcesz i użyj go.

+2

To dobrze, ale wydaje się, że działa tylko na innych programach cygwin. Nie możesz "straceć notatnika". Uruchamia notatnik, ale nie przechwytuje żadnych wywołań systemowych. –

+2

@MichaelFox: Tak, to tylko wychwytuje połączenia z cygwin1.dll. – user2284570

0

Możesz użyć monitora procesu napisanego przez Marka Russinovicha. Jest to fantastyczna mała aplikacja, która pozwoli ci dołączyć się do każdego działającego procesu w systemie i zobaczyć wszystkie wywołania systemowe, które aktualnie wykonuje proces.

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

+0

djhaskin987 wspomniano już o Monitorze Procesu we wcześniejszej odpowiedzi. Powinieneś edytować swoją odpowiedź i edytować w niej swój opis. – unforgettableid

Powiązane problemy