Windows için Systrace


87

Ben bir Windows eşdeğer arıyorum Systrace ya da en azından strace . StraceNT'nin farkındayım , ancak başka alternatifler olup olmadığını merak ediyorum. Özellikle, sistem çağrı ilkelerini programlı olarak uygulamanın belirli bir yolunu arıyorum, ancak bu, onları aktif olarak durdurmak yerine gerçeğin peşinde olabilir.

Şu anda bunu yapmanın iyi bir yolu var mı?


Yanıtlar:


28

4
Ancak, sistem çağrıları yerine kütüphane çağrılarını yakaladığı için strace'den çok ltrace'e benzer.
Michael

@BrunoMartinez: strace kullanmak için bir hafıza adresi belirlemenize gerek yok.
user2284570

41

Birkaç seçenek:

Süreç Monitörü

Ayrıca, Windows 7'de yerleşik olarak bulunan araçlar hakkındaki şu makaleye bakın:

Temel İşletim Sistemi Araçları


3
ProcessMonitor'u bir sürecin neden askıda kaldığını bulmak için kullandım - silemediği bir dosyaya erişmeye çalıştığı ortaya çıktı ... ProcMon olmasaydı asla çözemezdi
Jamie Cook

2
Linux'ta biraz strace kullanıyorum ve NANT ile yaşadığım sorunu gidermek için Windows'ta benzer bir araç ararken bu soruyla karşılaştım. Process Monitor'ü denedim, filtreyi yalnızca Nant.exe'yi içerecek ve diğer her şeyi hariç tutacak şekilde ayarladım, ayrıca yalnızca sorun yaşadığım yerlerde kayıt erişimi için filtre ayarladım ve yaşadığım sorunu hızlı bir şekilde çözdüm. Process Monitor'ü şiddetle tavsiye ederim.
hshib

@ djhaskin987: Benim durumumda bazı dosyaları yükleyen bir programım var; onları ʀᴀᴍ olarak tamponlayın (böylece hiçbir tutamaç kalmaz) ve kilitleyin . Sol işlem monitörü olmadığı için yardımcı olmaz.
user2284570

@hshib: İşlem izleme ile ilgili sorun, bir dosyaya erişmek için bir tanıtıcıya ihtiyaç duymayan bir işlemdir. Yani benimki gibi bir durumda (hangi yapılandırma dosyasının çökmeye neden olduğunu görmeye çalışmak) , bunun bir faydası yok.
user2284570

15

Dr. Memory ( http://drmemory.org ) aracı, bir hedef uygulama tarafından yapılan tüm sistem çağrılarını argümanlarıyla birlikte listeleyen drstrace adlı bir sistem çağrısı izleme aracı ile birlikte gelir: http://drmemory.org/strace_for_windows.html

Sistem çağrısı politikalarını programlı olarak uygulamak için drstrace ile aynı temel motorları kullanabilirsiniz: DynamoRIO araç platformu ( http://dynamorio.org ) ve DrSyscall sistem çağrısı izleme kitaplığı ( http://drmemory.org/docs/page_drsyscall. html ). Bunlar, bazı ek yüklere neden olan dinamik ikili çeviri teknolojisini kullanır (sabit durumda% 20 -% 30, ancak büyük bir masaüstü uygulaması başlatmak gibi yeni kod çalıştırırken çok daha yüksek), bu da sizin amaçlarınıza uygun olabilir veya olmayabilir.


11

API Monitor bu amaç için çok kullanışlı görünüyor.


Bu mükemmel bir programdır, ayrıntılı fonksiyon parametrelerini / dönüş değerlerini gösterir, belirli koşullar karşılandığında kesme noktası sağlar, birçok farklı kancalama yöntemi, böylece incelenmesini sevmeyen birçok işlemde kullanılabilir.
yuikonnu


3

strace, cygwin paketinde Cygwin'den edinilebilir . Bir Cygwin aynasından indirebilirsiniz , örneğin:

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

strace, Cygwin DLL'ye dayanmayan birkaç Cygwin programından biridir, bu yüzden sadece strace.exeistediğiniz yere kopyalayıp onu kullanabilmelisiniz.


7
İyi, ancak yalnızca diğer cygwin programlarında çalışıyor gibi görünüyor. Yapamazsın strace notepad. Not defteri başlatır, ancak herhangi bir sistem çağrısını yakalamaz.
Michael Fox

3
@MichaelFox: Evet, yalnızca cygwin1.dll çağrılarını yakalar.
user2284570


1

strace , Michael Fox'un da bahsettiği gibi Git tarafından desteklenmektedir .


1
Bu Linux programıdır. Yalnızca Linus yazılımı / sistem çağrılarıyla çalışır.
Henk Poley

0

Mark Russinovich tarafından yazılan işlem izleyicisini kullanabilirsiniz. Bu, sistemde çalışan herhangi bir işleme bağlanmanıza ve işlemin şu anda yaptığı tüm sistem çağrılarını görmenize olanak tanıyan harika bir küçük uygulamadır.

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


3
djhaskin987, daha önceki yanıtında Process Monitor'den bahsetmişti. Cevabını düzenlemeli ve açıklamanızı buna göre düzenlemelisiniz.
unforgettableidSupportsMonica
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.