strace , C'de uygulanan ve yalnızca GNU / Linux işletim sistemlerinde çalışacak şekilde tasarlanan bir sistem çağrı izleyici sağlayan geliştiriciler ve sistem yöneticileri için tasarlanmış, açık kaynak kodlu ve serbestçe dağıtılan bir yazılımdır.
Program, bir program veya bir süreç tarafından oluşturulan tüm sistem çağrılarını toplayıp izi basabilen çok yararlı bir hata ayıklama, öğretim ve tanılama yardımcı programıdır. Bu, yalnızca bir konsol ortamından veya bir terminal emülatör uygulaması aracılığıyla kullanılabilen bir komut satırı programıdır.
Araç, teşhis görevlileri, sorun gidericileri ve kapalı kaynaklı programlarla sorunları çözmek için paha biçilmez bir çözüm isteyen sistem yöneticileri tarafından kullanılabilir. Dmitry V Levin, Roland McGrath ve Wichert Akkerman tarafından yazılmıştır.
Komut satırı seçenekleri
Diğer komut satırı yazılımlarında olduğu gibi, strace kullanıcıların görevlerini gerçekleştirmek için tüm işlevlerini ve özelliklerini kolaylıkla kullanmasını sağlayan çok çeşitli komut satırı seçenekleri sunar. Tüm komut satırı seçeneklerine bir bakışta & lsquo; strace --help & rsquo; Komut.
En ilgi çekici komut satırı seçenekleri arasında, her sistem çağrısı için kaç kez, çağrı ve hata sayımı, sistem çağrısı gecikmesini özetleme desteği, belirli bir yola erişim izlemesi desteği, hata ayıklama çıktısını stderr'e aktarma desteği, hem de bir izleme işlemi, ebeveyn olarak değil, ayrı bir torun olarak çalıştırılma desteği.
Ayrıca, izleme bilgilerini, stderr yerine belirli bir dosyaya gönderebileceksiniz, sistem çağrılarını bir genel masrafa izlemek için yükü ayarlamak, izleme işlemi için bir PID dosyası oluşturmak, baskı dizelerinin uzunluğunu sınırlamak için ayarlayabilirsiniz karakterleri strsize etmek, komutları setgid ve / veya setuid işleyen kullanıcı adı olarak çalıştırmak ve belirli bir sistem çağrısında ayırabilmek için.
Strace'ye başlarken
strace yalnızca bir kaynak tarball olarak dağıtılır ancak ana yazılım depoları üzerindeki sayısız Linux dağıtımına kolayca yüklenebilir. Kaynaklardan yüklemek için, en son sürümünü Softoware'den indirin, arşivinizi istediğiniz bir yere kaydedin ve paketini açın.
Bir Terminal uygulaması açın, ayıklanan arşiv dosyalarının bulunduğu yere gidin (ör. cd /home/softoware/strace-4.9), ./configure && make & rsquo; komutu yapılandırın ve strace'yi derleyin ve daha sonra & lsquo; make install & rsquo; komutu olarak root olarak veya & lsquo sudo make install & rsquo;
Yenilikler : Bu sürümde strace system
- Gelişmeler:
- Soket tanımlayıcılarıyla ilişkili protokol ve adres bilgilerini yazdırmak için bir seçenek eklendi.
- Genişletilmiş & quot; -e read = set & quot; ve "-e write = set" sendmsg, recvmsg, sendmmsg ve recvmmsg sistem çağrılarını kapsayan seçenekler.
- ioctl komutlarının tam 32 bitlik kod çözülmesi gerçekleştirildi (Debian # 692913 ve Fedora hata # 902788 adreslendi).
- ia64'de PTRACE_GETREGS API desteği uygulandı.
- mipslerde PTRACE_GETREGS API desteği uygulandı.
- s390 / s390x'de PTRACE_GETREGSET API desteği uygulandı.
- getrandom ve seccomp sistem çağrılarının kod çözümü uygulandı.
- 64 bitlik yetkinlik kümelerinin tümüyle çözülmesi gerçekleştirildi.
- Tüm prctl komutlarının şifre çözülmesi uygulandı.
- Parametreleştirilmiş ioctl komutlarının kod çözümü uygulandı.
- Evdev ioctl komutlarının şifresini çözme işlemi gerçekleştirildi.
- v4l ioctl komutlarının çözülmesi gerçekleştirildi.
- SG_IO v4 ioctl komutlarının şifre çözülmesi uygulandı.
- FIFREEZE / FITHAW / FITRIM ioctl komutlarının çözülmesi gerçekleştirildi.
- FALLOC_FL_ * fallocate bayraklarının kod özümü uygulandı.
- rt_sigreturn sinyal maskesinin kod çözme işlemini aarch64, x32 ve x86_64 üzerinde gerçekleştirildi.
- Bluetooth soketlerini desteklemek için geliştirilmiş soket dekoder.
- Listelenmemiş ioctl komutlarının geliştirilmiş kod çözümü.
- getsockopt ve setsockopt sistem çağrılarının geliştirilmiş kod çözümü.
- sysinfo sistem çağrılarının gelişmiş kod çözümü.
- struct cmsghdr'nin gelişmiş kod çözümü.
- Bekleme durumunun gelişmiş kod çözümü.
- Harici libaio.h kullanarak x86 dışındaki mimaride gelişmiş aio desteği.
- O_TMPFILE öğesini tanınmış açık mod bayrakları listesine ekledi.
- statfs aile sistem çağrılarının çözümlenmesinde kullanılan dosya sistemi türü sabitlerinin listesini güncelledi.
- CAP_ *, PR_ *, PTRACE_ *, SCHED_ *, SO_ *, SOL_ *, SWAP_FLAG_ * ve TFD_ * sabitlerinin güncellenmiş listeleri.
- Linux 3.19'dan gelen sinyal sabitlerinin listeleri güncellendi.
- Linux 3.19'dan gelen errno sabitlerinin listesi güncellendi.
- Linux 3.9'dan ioctl komutlarının listesi güncellendi.
- Linux 3.19 ile eşleşen yeni sistem çağrıları girişi.
- Hata düzeltmeleri:
- Sistem çağrısı sayıları ile sistem çağrısı argümanları sayısı, sistem çağrısı adı ve sistem çağrısı dekoderi gibi ilişkili bilgiler arasındaki eşlemedeki çeşitli hataları düzelttim.
- Yazdırma tanımlayıcılarında, dosya adlarında, ağ arabirim adlarında, yapı utsadı üyelerinde, BLK * ioctl komutlarının aygıt / birim adlarında düzeltilen teklif sorunları.
- Sabitlenmiş uid_t / git_t kod çözme.
- Sabit potansiyel sınırları dışında getdents / getdents64 kod çözücüleri okudum.
- Bazı mimarilerde sabit potansiyel açık bayraklar kesiliyor.
- struct ifreq.ifr_name dosyasının sabit kod çözümü.
- SIOCSIFNAME ioctl komutunun çözülmesi.
- RENAME_ * renameat2 bayraklarının düzeltilmiş çözülmesi.
- Geçmiş yapılarının UTIME_NOW / UTIME_OMIT kodlarının çözülmesi.
- Bazı mimaride dolaylı ipc alt çağrılarının çözülmesi.
- fanotify_mark sistem çağrısının 32 bitlik mimarilerde çözülmesi.
- 64-bit mimariler üzerinde 32-bit stat yapısının sabit çözülmesi.
- 64-bit mimariler üzerinde 32-bit struct cmsghdr'nin çözülmesi.
- 64-bit mimarilerde 32-bit preadv / pwritev ofsetinin çözülmesi.
- ia64, ppc, ppc64, sparc, sparc64, mips'ler ve s390'da sigreturn / rt_sigreturn sinyal maskesinin düzeltilmiş çözülmesi.
- Çeşitli kişilikleri destekleyen mimariler üzerinde sabit komut işaretçisi çıktısı (-i seçeneği).
- & quot; -e read = set & quot; ve "-e write = set" okuma ve yazma kümeleri kesiştiğinde.
- struct sigaction'ın sa_restorer üyesi bulunmayan sistemlerde sabit yapı.
- uclibc ve musl libc ile sabit yapı.
- Taşınabilirlik:
- Linux çekirdeği & gt; = 2.5.46 gereklidir. İyi bir PTRACE_SETOPTIONS desteği olmayan eski sürümler çalışmaz.
- Mipslerde, linux kernel & gt; = 2.6.15 gereklidir. İyi bir PTRACE_GETREGS desteği olmayan eski sürümler çalışmaz.
- s390 ve s390x'te, Linux çekirdeği & gt; = 2.6.27 gereklidir. İyi bir PTRACE_GETREGSET desteği olmayan eski sürümler çalışmaz.
4.9 sürümünde
yenilikler :
- Davranıştaki değişiklikler:
- ARM EABI sistemlerinde varsayılan olarak OABI desteği devre dışı bırakıldığında, yapılandırma sırasında etkinleştirilebilmesi için --enable-arm-oabi seçeneği eklendi.
- İyileştirmeler:
- İzlenen her sistem çağrısı sonrasında yığın izini basmak için deneysel -k seçeneği eklendi.
- Sistem çağrısı gecikmesiyle ilgili istatistikler üretmek için -w seçeneği. (Debian hata # 457497 adresleri).
- ARC mimarisi desteği eklendi.
- PowerPC'ye PTRACE_GETREGS API desteği eklendi.
- Geliştirilmiş Bionic libc ve musl libc desteği.
- x86_64 ve x32'de x86 kişilik süreçlerinin izlenmesini geliştirdi.
- AArch64'te ARM kişilik süreçlerinin izlenmesini geliştirdi.
- PowerPC'de gelişmiş 32/64 bit kişilik algılama.
- add_key, ioprio_get, ioprio_set, kexec_load, keyctl, renameat2 ve request_key sistem çağrılarının kod özümü uygulandı.
- select, pselect ve io_submit sistem çağrılarının güçlü bir şekilde çözülmesi.
- delete_module, fanotify_init, fanotify_mark, fcntl, setdomainname, sethostname, ayarlar ve sync_file_range sistem çağrılarının gelişmiş kod çözümü.
- Sinyal bit maskelerinin geliştirilmiş kod çözümü.
- Dosya tanımlayıcılarının kod özümünün geliştirilmiş hali.
- Geliştirilmiş şifreleme çözümü.
- Geliştirilmiş PF_NETLINK şifre çözme.
- Güncellenen CLOCK_ * sabitler (Fedora hata # 1088455 adresleri).
- Linux 3.16 ile eşleşen yeni sistem çağrıları girişi.
- Hata düzeltmeleri:
- Bellek eşlemeyle ilgili sistem çağrıları grubuna shmat ve shmdt eklendi.
- Durdurulan süreçlerden ayrılması düzeltildi.
- 32bit mimaride fanotify_mark kod çözme işlemi düzeltildi.
- preadv ve pwritev sistem çağrılarında sabit ofset çözme.
- _FORTIFY_SOURCE modunda glibc için şifre çözme düzeltildi.
- epoll_ctl sisteminin EPOLL_CTL_DEL argümanıyla çözülmesi.
- Sabit yapılandığında ve çakıştığında (Fedora hata # 993384 adreslenir).
- Manuel sayfadaki diğer düzeltmeler. (Adresleri Debian hatası # 725987).
- Davranıştaki değişiklikler:
- Normal strace sonlandırma durumunda, izleme çıkışı bir boruya yönlendirildiğinde, strace şimdi kapatır ve çıkmadan önce boru işleminin sonlandırılmasını bekler.
- İyileştirmeler:
- PTRACE_SEIZE API'sını (varsa) kullanarak izleme uygulandı.
- x86-64 ve x32'de (varsa) daha güvenilir bir PTRACE_GETREGSET tabanlı işlem niteliği algılaması uygulanmıştır.
- -e trace = bellek eşleştirme ile ilgili sistem çağrılarını izlemek için bellek seçeneği.
- -b seçeneği belgelendi.
- -q seçeneğini iki kez vererek çıkış durum mesajlarının engellenmesine izin verdi.
- AArch64 mimarisi desteği eklendi (Debian hata # 693074 ve Fedora hata # 969858 adresleniyor).
- OpenRISC 1000, Meta ve Xtensa mimarileri için destek eklendi.
- Kiremit için tilegx kişilik desteği eklendi.
- NOMMU mimarilerinin geliştirilmiş desteği.
- Getdents, mmap, perf_event_open, ptrace ve quotactl sistem çağrılarının geliştirilmiş kod çözümü.
- Linux 3.9 ile eşleşen yeni sistem çağrıları girişi.
- Linux 3.9'daki yaygın ioctl adlarının listesini yeniden oluşturdu.
- errno sabitlerinin listesi güncellendi.
- AF_ *, MADV_ *, MAP_ *, MSG_ *, MS_ *, PF_ *, PR_ *, PTRACE_O_ * ve sabitleri TCP_ * olarak güncelledi.
- UBI ioctl'lerinin kod çözümü uygulandı.
- Gereksiz "* 32" kaldırıldı. ioctl isimleri.
- Hata düzeltmeleri:
- Eski çekirdeği kullanıcı alanına sızdırıyordu (Fedora hata # 659382 adresleniyor). ERESTARTNOINTR düzeltildi.
- Sabit çekirdek sürüm dizesi ayrıştırma (Debian hata # 702309 adresleri).
- * xattr sistem çağrılarının düzeltilmiş çözülmesi (Fedora hata # 885233 adresleri).
- 32-bit strace ile 64-bit inode numaralı dosyaların sabit olarak işlenmesi (Fedora böcek # 912790 adresleri).
- SPARC üzerinde sabit çatal çatalları.
- fadvise64, fallocate, ftruncate64, io_submit, pread, preadv, pwrite, pwritev, readahead, sigaltstack, sync_file_range, sysctl ve truncate64 sistem çağrılarının düzeltilmiş çözümü.
- Desteklenen birçok mimaride sabit sistem kategorisinde birden çok sistem çağrısı.
- Yerel olmayan 32-bit kişilik recv [m] ileti sistem çağrılarının düzeltilmiş çözülmesi.
- x32 üzerindeki birden çok 32-bit kişilik sistem çağrılarının çözülmesi.
- ARM, MIPS / o32, PowerPC, S390x ve Karo mimarileri üzerinde uzun uzun sistem çağrısı argümanlarının çözülmesi.
- S390x'de semtimedop kod çözümü düzeltildi.
- Blackfin'de çözülen sram_alloc düzeltildi.
- process_vm_readv bir bıçaklama olduğunda sabit yapı.
- libaio.h'nin eski sürümleriyle birlikte düzeltme yapıldı.
- Bu normal hata düzeltmeleriyle, yeni Linux çekirdeği için geliştirilmiş destek ve diğer iyileştirmeler.
- Bu, olağan hata düzeltmeleri, geliştirilmiş destek ile istikrarlı bir sürümdür. Yenilikler yeni Linux çekirdeği için ve Linux çekirdeğinin açıklık özelliklerini kullanarak iş parçacığı ve alt süreçlerin oluşturulmasını izlemek için kullanılan klon, çatal ve vfork sistem çağrılarını takip eden yeni bir yöntem de dahil olmak üzere diğer geliştirmeler.
- Gelişmeler:
- Yeni linux sistem çağrılarının çözülmesi gerçekleştirildi: inotify_init1, recvmmsg.
- Yeni linux sistem çağrılarının temel kod çözümü uygulandı: preadv, pwritev, rt_tgsigqueueinfo, perf_event_open.
- x86 / x86-64 için daha önce etkinleştirilen detaylı ayrıştırıcılarla çıplak bir kod çözücünün yerini almasıyla, x86 olmayan mimaride son eklenen sistem çağrılarının geliştirilmiş kod çözümü.
- Düzenli ve -c çıktılarını birleştirmek için -C seçeneği uygulanmıştır. (Adresler Debian hata # 466196)
- mbind ve mremap sistem çağrılarının gelişmiş kod çözümü.
- Gelişmiş SOL_PACKET soket seçeneklerini çözme.
- Linux 2.6.33'ten ioctl adlarının tekrar oluşturulmuş listesini.
- TILE mimarisi desteği eklendi.
- Hata düzeltmeleri:
- Linux çekirdeği başlıkları 2.6.32-rc5 + ile sabit yapı. (Debian hata # 560516 ve Fedora hata # 539044 adresleri)
- miplerde sabitleme.
- struct statfs64 olmadan Linux sistemlerinin sabit kullanımı.
- powerpc üzerinde sigreturn ile sinyal maskesi düzeltildi.
- Seçimli kod çözücüde olası potansiyel yığın arabellek taşması. (Fedora hata # 556678 adresleri)
- Msgsnd dolaylı ipccall kod çözme düzeltildi.
- 64 bit sistem çağrılarının düzeltildi. (Adresler Debian hatası # 570603)
- mimaride getsokopt kod çözme düzeltildi burada sizeof (uzun) & gt; sizeof (int). (Adresleri Debian hatası # 494844)
- epoll_pwait kod çözme düzeltildi. (Adresleri Debian # 513014 hatası)
- Öldürülen iplerin düzeltilmesi.
4.8 sürümünde
yenilikler :
Yenilikler :
Sürüm 4.5.20'de
Yenilikler :
Yorum Bulunamadı