Linux'un Röntgenini Çekmek: strace ile Sistem Çağrıları Analizi
🇹🇷 Linux’ta yavaşlayan, kilitlenen veya hata veren programların arkasında ne var? strace ile system call’ları izleyerek dosya, ağ ve süreç sorunlarını gerçek örneklerle analiz edin.
Linux kullanmaya yeni başladığınızda, bazen ekrana bakıp “Şu an arka planda neler dönüyor acaba?” dediğiniz oldu mu?
Sisteminiz yavaşlar, bir program hata verir ama nedenini söylemez, internet var gibi görünür ama yoktur… Çoğu kullanıcı bu durumda bilgisayarı yeniden başlatır. Ama yetkin bir Linux Kullanıcısı olma yolunda olmak istiyorsanız, okumaya devam edebilirsiniz.
Bu yazı ile Linux dünyasının en güçlü röntgen cihazı olan strace aracını ve havalı ismiyle “System Observability” (Sistem Gözlemlenebilirliği) kavramını en sade haliyle öğreneceksiniz.
📌 Bu Yazıda Ne Öğreneceksin?
Bu yazının sonunda:
strace nedirvene işe yararsorularına net bir cevap verebileceksiniz- Linux’ta bir programın kernel ile nasıl konuştuğunu (system call) gerçek örneklerle anlayacaksınız
- Donan, yavaşlayan veya hata veren bir uygulamada sorunun dosya mı, ağ mı yoksa süreç kaynaklı mı olduğunu ayırt edebileceksiniz
strace -p,-e,-f,-tt,-cgibi kritik parametreleri ne zaman ve neden kullanmanız gerektiğini bileceksiniz- Log atmayan veya “sessizce” çöken programları kodu okumadan debug edebileceksiniz
strace’in nerede güçlü, nerede yetersiz kaldığını ve hangi durumdaperf,gdbveyaeBPFgibi araçlara geçmeniz gerektiğini anlayacaksınız
Kısacası; “Program neden çalışmıyor?” sorusuna tahminle değil, kanıta dayalı cevap vermeyi öğreneceksiniz.
🏗️ Temel Mantık: Restoran Analojisi
Linux sisteminin nasıl çalıştığını anlamak için bir restoran hayal edin:
- Müşteri (Programlarınız): Web tarayıcınız, Spotify veya yazdığınız Python kodu. Masada otururlar ve yemek (kaynak) isterler.
- Mutfak (Kernel/Çekirdek): Yemeğin piştiği yer. Diskten dosya okuma, internete bağlanma, ekrana yazı yazma gibi “gerçek” ve zor işler burada yapılır. Müşterilerin mutfağa girmesi yasaktır.
- Garson (System Call / Syscall): Müşteri ile mutfak arasındaki köprüdür. Müşteri garsona “Bana su getir” der, garson mutfağa gider, suyu alır ve getirir.
İşte strace aracı, o garsonu yakından izleyen bir araç gibidir. Müşteri (program) mutfaktan (işletim sistemi) ne istedi? Mutfak ona ne cevap verdi? Hepsini canlı olarak izlemenizi sağlar.
graph TD
User["User Space<br><i>(Uygulama)</i>"]
Syscall["System Call Interface<br><i>(Sistem Çağrısı Arayüzü)</i>"]
Kernel["Kernel Space<br><i>(Çekirdek)</i>"]
User -- "İstek Yapar (Örn: open)" --> Syscall
Syscall -- "İsteği İletir" --> Kernel
Kernel -- "İşlemi Yapar ve Cevaplar" --> Syscall
Syscall -- "Sonucu Döndürür (Örn: FD 3)" --> User
🛠️ strace Kurulumu
🐦 Maskot Trivia: strace‘in maskotu, devekuşu benzeri sevimli bir kuştur. Çünkü o da kafasını kuma gömüp (kernel’a dalıp) neler olup bittiğine bakar.
Çoğu dağıtımda kurulu gelse de sisteminizde yoksa şu komutlarla hızlıca kurabilirsiniz:
- Debian/Ubuntu:
sudo apt install strace - RHEL/CentOS/Fedora:
sudo dnf install strace(veyayum) - Arch Linux/Manjaro:
sudo pacman -S strace
Resmi Adresler: strace | GitHub | GitLab
🎧 strace ile Canlı İzleme
Bir program çalışırken dondu kaldı veya garip davranıyor. Hemen terminali açıp o programın garsonla konuşmalarını izlemeye başlayabilirsiniz.
Bunun için sistem yöneticilerinin sıkça kullandığı o temel komutu kullanalım:
Bu komut ne yapıyor?
strace: “İzlemeyi başlat”-p <PID>: Process ID (İşlem Kimliği). Her programın bir TC kimlik numarası vardır. “Bana yeni bir program başlatma, şu an çalışan 1234 numaralı programa bağlan” diyoruz. (PID’itopveyapskomutlarıyla bulabilirsiniz).-s 80: Normalde strace, konuşmaların sadece başını gösterir (“Bana su get…“). Bu parametre ile “Cümleleri kesme, en az 80 karakterini göster” diyoruz. Böylece hata mesajlarının tamamını okuyabiliriz.-e write: En önemlisi bu. Bir program çalışırken binlerce boş işlem yapar (hafızada yer açma, saati sorma vs.). Bize bunlar lazım değil. Bize programın dış dünyaya bir şeyler anlattığı (write) anlar lazım. “Sadece yazma isteklerini bana göster” diyoruz.
Bu komutu yazdığınızda, terminalinizde programın o an diske veya ağa ne yazdığını canlı akan bir şelale gibi görürsünüz. Bu sayede anlık akışı takip edebilirsiniz.
📖 strace Çıktısı Nasıl Okunur?
Ekrana akan yazılar gözünüzü korkutmasın. Her satır aslında standart bir cümledir. Örnek bir satırı inceleyelim:
1
open("/etc/hosts", O_RDONLY) = 3
Bu satırı üç parçaya bölebiliriz:
- Syscall Adı (
open): Garsona verilen sipariş. “Dosya aç”. - Argümanlar (
"/etc/hosts", O_RDONLY): Siparişin detayları. “Hangi dosya? /etc/hosts. Hangi modda? Sadece okuma (Read Only).” - Dönüş Değeri (
= 3): Mutfağın cevabı. “Tamam açtım, dosya numarası 3.”
🚫 Hata Kodları ve -1 Mantığı
Linux çekirdeği bir talebi reddettiğinde genellikle -1 döndürür ve yanına nedenini (errno) yazar.
1
open("/böyle/bir/dosya/yok", O_RDONLY) = -1 ENOENT (No such file or directory)
-1: “İşlem başarısız.”ENOENT: “Error NO ENTry” (Girdi yok / Dosya yok).
📋 Sık Karşılaşılan Hata Kodları (errno)
Terminalde sıkça göreceğiniz bu kodların anlamlarını bilmek, sorunu şifre çözer gibi anlamanızı sağlar:
| Kod | Anlamı | Olası Sebep |
|---|---|---|
ENOENT | Dosya veya dizin yok | Yanlış dosya yolu, silinmiş dosya. |
EACCES | Erişim engellendi | Yetki hatası (chmod / chown sorunu). |
EPERM | İşlem reddedildi | Genellikle sudo yetkisi eksikliği. |
ECONNREFUSED | Bağlantı reddedildi | Karşı sunucu kapalı veya yanlış port/IP. |
ETIMEDOUT | Zaman aşımı | Ağ yavaşlığı, Firewall engellemesi. |
ENOSPC | Disk dolu | Disk alanı bitmiş, veri yazılamıyor. |
EEXIST | Dosya zaten var | Var olan bir dosyayı yeniden oluşturma girişimi. |
EAGAIN | Kaynak geçici olarak yok | Sistem çok yoğun, birazdan tekrar dene. |
Linux sessiz değildir, sadece dilini bilmek gerekir. Tüm hata kodlarının anlamını görmek için terminale man errno yazabilirsiniz.
🕵️♂️ Vaka İncelemeleri: Gerçek Hayat Senaryoları
Peki bu aracı gerçek hayatta nasıl kullanırız? Birkaç yaşanmış senaryoyu analiz edelim.
📂 Vaka 1: “Dosya Bulunamadı” Hatası Analizi
Bir program çalışmıyor, loglarda “Config not found” diyor ama hangi dosyayı aradığını söylemiyor. /etc/ altında mı, /home/ altında mı? Nerede bu dosya?
Programın kodunu okumanıza gerek yok. Sadece garsona verilen “dosya aç” (open) isteklerini izleyin:
1
2
# -e open: Sadece dosya açma isteklerini göster
strace -e open my_program
⚠️ Önemli Uyarı: Pipe (
|) ve Grep Tuzakları Birçok kullanıcıstrace my_program | grep "open"yapmaya meyillidir. Ancak standartgrep, pipe ile kullanıldığında çıktıyı tamponlar (buffer). Yani program çalışır, hata verir ama siz ekranda hiçbir şey göremezsiniz çünkü satırlar grep’in havuzunda birikiyordur.Eğer illa
grepkullanacaksanız, tamponlamayı kapatın:strace my_program 2>&1 | grep --line-buffered "open"Ama en iyisi her zaman
strace‘in kendi-efiltresini kullanmaktır.
🧪 Kendin Dene: Kayıp Dosya Vakası Aşağıdaki kodu
config_okur.pyolarak kaydedin. Bu script, olmayan bir yapılandırma dosyasını okumaya çalışır.
1 2 3 4 5 6 # config_okur.py # "Loglarda sadece hata var ama adres yok" simülasyonu try: f = open("/tmp/olmayan_config.ini", "r") except FileNotFoundError: print("Hata: Config dosyası bulunamadı! (Ama hangisi?)")Şimdi şu komutla çalıştırın:
strace -e open python3 config_okur.pyÇıktıdaopenat(..., "/tmp/olmayan_config.ini", ...) = -1 ENOENTsatırını yakaladınız mı?
Ekrana şöyle bir şey düşerse: open("/etc/yanlis_klasor/ayarlar.txt", ...) = -1 ENOENT (No such file or directory)
Sonuç: Programın yanlış klasöre baktığını anında gördünüz. Dosya orada olmadığı için (ENOENT) hata alıyor.
⏱️ Vaka 2: Program Neden Bekliyor? (Zamanın İzinde)
Bir web sayfasını açmaya çalışıyorsunuz ama 30 saniye boyunca beyaz ekranda bekliyor. Sorun nerede? Kodda mı, veritabanında mı, yoksa internette mi?
strace‘e -tt parametresini eklerseniz, her satırın başına saat, dakika ve mikrosaniye bilgisini yazar.
1
strace -tt -p <PID>
Çıktıya baktınız:
1
2
14:00:01.000 connect(google.com...)
14:00:31.000 write(...)
Arada tam 30 saniye fark var. Demek ki programınız internete bağlanmaya çalışırken zaman aşımına (Timeout) uğruyor. Sorun kodda değil, ağ bağlantısında. Sorunun kaynağı tespit edildi.
🔪 Vaka 3: Süreci Sonlandıran Kaynağın Tespiti
Bir web sunucusu (örneğin Swoole) çalışırken, işçi parçalarından (Worker) biri aniden ölüyor. Loglarda sadece “Sinyal 9 (SIGKILL) ile kapatıldı” yazıyor.
Ama neden kapandı?
- Sistem mi (RAM bittiği için)?
- Admin mi (yanlışlıkla)?
- Yoksa ana program (Master Process) bizzat kendi işçisini mi sonlandırdı?
Kaynağı bulmak için tüm ilgili süreçleri (Master process ve diğer Worker’lar) aynı anda takibe almalıyız:
1
2
3
# -p ile birden fazla PID verebiliriz
# -e trace=signal: Sadece sinyalleri izle (Hangi süreç sinyal gönderiyor?)
strace -p 101,102,103,104 -tt -e trace=signal,kill
Bu izleme sonucunda, Master sürecin (PID 101), Worker sürecine (PID 104) kill(104, SIGKILL) gönderdiği anı yakalarsanız, sorunun kaynağının uygulama içi bir mekanizma olduğunu anlarsınız.
graph TD
Master[Master Process<br>PID 101]
Worker1[Worker<br>PID 102]
Worker2[Worker<br>PID 103]
Worker3[Worker<br>PID 104]
Master --> Worker1
Master --> Worker2
Master --> Worker3
Master -.->|"SIGKILL (Sinyal 9)"| Worker3
style Worker3 stroke:#721c24,stroke-width:2px,stroke-dasharray: 5 5
📊 Vaka 4: Büyük Resmi Görmek (İstatistik)
Bazen detaylarda boğulmak yerine “Bu program zamanının çoğunu ne yaparak harcıyor?” diye sormak istersiniz. Bunun için -c (count/sayaç) parametresi kullanılır:
1
strace -c -p <PID>
Özet karne size şöyle bir tablo verecektir:
1
2
3
4
5
% time seconds usecs/call calls errors syscall
------ ----------- ----------- --------- --------- ----------------
90.00 0.050000 100 50 select (Bekleme)
5.00 0.002000 10 10 write (Yazma)
------ ----------- ----------- --------- --------- ----------------
Bu tabloya bakıp “Hmm, program zamanının %90’ını select yaparak, yani bir şeyleri bekleyerek geçiriyor, diski yormuyor” diyebilirsiniz.
🛠️ Ustalık Sınıfı: Kritik Parametreler
strace sadece yukarıdaki komutlardan ibaret değildir. Profesyonel kullanım için şu 3 parametreyi de mutlaka alet çantanıza ekleyin:
1. -f : Alt Süreçleri Takip Et (Follow Forks)
Varsayılan olarak strace sadece ana süreci (Parent) izler. Ancak Nginx, Chrome veya Apache gibi uygulamalar, işi yapmak için yüzlerce alt süreç (Child Process) veya Thread (İş parçacığı) oluşturur.
Eğer -f kullanmazsanız, asıl işi yapan alt süreçteki hatayı kaçırırsınız.
💡 Bilgi: Linux’ta “Thread” dediğimiz şeyler, teknik olarak ana süreç ile kaynakları paylaşan hafif siklet süreçlerdir (LWP). Bu yüzden
straceçıktısında Thread’leri de ayrı birer PID olarak görürsünüz. Hepsini yakalamak için-fşarttır.
1
2
# Sadece ana süreci değil, onun oluşturduğu tüm çocukları da izle
sudo strace -f -p <PID>
2. -o : Çıktıyı Dosyaya Yaz (Output)
Canlı akışı okumak zordur ve terminal satır sınırına takılabilir. Analizi daha sonra sakin kafayla yapmak (veya grep ile arama yapmak) için çıktıyı bir dosyaya kaydedin.
1
strace -o analiz_raporu.txt my_program
3. -T : Sistem Çağrısı Süresi (Time Spent)
Vaka 2’de gördüğümüz -tt parametresi işlemin ne zaman yapıldığını gösterir. -T ise işlemin ne kadar sürdüğünü (Latency) gösterir. Satırın en sonuna <0.000152> gibi bir süre ekler.
Performans sorunlarını ararken “Hangi disk okuması 5 saniye sürdü?” sorusunun cevabı buradadır.
4. 🏷️ -y : Dosya Sapı Numaralarından Kurtulun
read(3, ...) satırını gördüğünüzde “3 numaralı dosya da nedir?” diye sormamak için -y parametresini kullanın. strace sizin için o numaranın karşılığını (dosya yolu, socket vs.) yanına yazar.
1
2
strace -y -p <PID>
# Çıktı: read(3</etc/hosts>, ...) = 50
5. 💉 --inject : Hata Simülasyonu (Kaos Mühendisliği)
Sisteminiz “Disk Dolu” (ENOSPC) hatası aldığında nasıl davranacak? Bunu test etmek için diski gerçekten doldurmanıza gerek yok. strace ile programa yalan söyleyebilirsiniz.
1
2
# Programa, open (dosya açma) isteklerinde yapay bir "ENOENT" (Dosya Yok) hatası gönder
strace -e inject=open:error=ENOENT my_program
Bu özellik, yazılımınızın hata toleransını test etmek için paha biçilemez bir “Matrix Modu” yeteneğidir.
6. 🎯 -P : Nokta Atışı Dosya Takibi (Path)
Bazen sadece belirli bir dosyaya kimin dokunduğunu merak edersiniz. Yüzlerce satır arasında kaybolmak yerine:
1
strace -P /etc/hosts my_program
komutu ile sadece o dosyayla ilgili işlemleri filtreleyebilirsiniz.
7. 📦 Syscall Sınıfları (Kısayollar)
open,read,write,close diye tek tek yazmak yerine, strace‘in sunduğu hazır sınıfları kullanabilirsiniz:
%file: Tüm dosya işlemleri (open,stat,chmod…)%network: Tüm ağ işlemleri (socket,bind,connect…)%process: Süreç yönetimi (fork,exec,exit…)
Örnek:
1
strace -e trace=%network google-chrome
🚧 strace Her Şeyi Görür Mü? (Sınırlar)
strace harikadır ama her derde deva değildir. Sınırlarını bilmek sizi boşuna kürek çekmekten kurtarır.
- Sadece Sınırı Görür:
stracesadece User Space ile Kernel Space arasındaki konuşmaları (System Calls) görür. Programın kendi içindeki mantık hatalarını,if-elsebloklarını veya değişken değerlerini göremez. - CPU Problemleri: Eğer bir program %100 CPU kullanıyor ama
straceçıktısı boşsa, program Kernel’dan bir şey istemiyor demektir. Kendi içinde sonsuz bir döngüye (Infinite Loop) girmiş olabilir. Bu durumdastraceişe yaramaz. - Deadlock (Kilitlenme): Programın kendi içindeki thread kilitlenmeleri syscall üretmeyebilir.
Hangi Sorun İçin Hangi Araç?
| Sorun Tipi | Doğru Araç |
|---|---|
| “Program dosyayı bulamıyor” veya “Ağ hatası” | ✅ strace |
| “Program %100 CPU yiyor” | ✅ perf veya top |
| “Programın içindeki değişkenin değeri ne?” | ✅ gdb (Debugger) |
| “Hangi fonksiyon kilitlendi (Deadlock)?” | ✅ pstack veya gdb |
🤝 strace vs ltrace: Ne Zaman Hangisi?
Bazen strace ile aradığınızı bulamazsınız çünkü sorun çekirdekte değil, kullandığınız kütüphanededir (User Space). İşte burada devreye kardeşi ltrace girer.
| Özellik | strace | ltrace |
|---|---|---|
| Görüş Alanı | System Calls (Kernel Space) | Library Calls (User Space) |
| Örnek | open(), read(), write() | strcmp(), malloc(), printf() |
| Kullanım Yeri | İşletim sistemiyle iletişim sorunları | Kütüphane mantık hataları |
Örnek Senaryo: Bir parola kontrol programını inceliyorsunuz.
strace: Sadece şifrelenmiş verinin okunduğunu görür (örneğinread()çıktısı).ltrace:strcmp("girilen_parola", "gercek_parola")fonksiyonunu yakalayıp parolayı açık halde gösterebilir.
🛡️ Güvenlik ve Uyarılar
strace kullanırken iki büyük risk vardır:
- Performans Kaybı:
strace, izlediği programı her adımda durdurup kontrol eder. Yoğun çalışan bir sunucuda bu işlem sistemi ciddi şekilde yavaşlatabilir (%20-%50 arası overhead). Canlı sistemde kullanırken dikkatli olun. - Hassas Veri Sızıntısı:
-s 10000ve-e writegibi parametrelerle veri paketlerini izlerken, loglarda kullanıcı şifreleri, API key’leri veya veritabanı sorguları açık bir şekilde görünebilir.straceçıktılarını asla güvensiz bir yerde saklamayın ve başkalarıyla paylaşmadan önce temizleyin.
🌍 Diğer İşletim Sistemlerindeki Benzer Araçlar
Sanmayın ki bu yetenekler sadece Linux’a özgü.
- macOS / Solaris: Burada efsanevi DTrace kraldır. (Bryan Cantrill’e selamlar).
- Windows: Microsoft’un Process Monitor (ProcMon) aracı, Windows dünyasının strace’idir. (Mark Russinovich’in kulakları çınlasın). Sonradan Linux dünyasına da ProcMon for Linux olarak geldi.
🛑 Neden printf Debugging Yerine strace?
Yazılım geliştirirken en sık yapılan (ve en yavaş) hata, kodun her yerine printf("Buradayım 1...") yazıp tekrar tekrar derlemektir.
- Semptom vs Sebep:
printfsize kodun nerede durduğunu gösterir.straceise neden durduğunu (Örn: “Disk dolu No space left on device”) gösterir. - Kapalı Kutular: Kaynak koduna sahip olmadığınız veya değiştiremediğiniz bir Veritabanı sunucusunu debug ederken
printfkullanamazsınız. Ancakstraceile ona “dışarıdan” bakabilirsiniz. - Hız: Kodu değiştir -> Derle -> Çalıştır döngüsü vakit kaybıdır.
straceile kodu değiştirmeden anında teşhis koyarsınız.
“Print debug” amatör bir yara bandıdır, strace ise cerrahi bir müdahaledir.
🚀 Geleceğe Bakış: strace vs eBPF
Teknoloji yerinde durmuyor. Artık “Garsonu durdurmadan” onu izlemenin modern yolları var: eBPF.
strace eski usül cerrahi müdahale ise, eBPF modern bir MRI cihazıdır. Sistemi durdurmadan, çok düşük maliyetle inanılmaz detaylı veriler toplar.
| Özellik | strace | eBPF (bcc / bpftrace) |
|---|---|---|
| Hız / Performans | Yavaş (Yüksek Overhead) | Çok Hızlı (Düşük Overhead) |
| Kullanım Kolaylığı | Kolay (Tek komut) | Orta/Zor (Script yazmak gerekebilir) |
| Görüş Alanı | Sadece Syscall | Tüm Sistem (Kernel, Network, User func) |
Eğer sisteminizde performans kritikse, strace yerine şu modern araçları kullanmayı deneyin:
opensnoop: Sistem genelinde kim hangi dosyayı açıyor?execsnoop: Şu an sistemde hangi yeni komutlar çalıştırıldı?tcptracer: Giden/gelen TCP bağlantılarını canlı izle.
🗺️ Debugging Mini Yol Haritası
Bir sorunla karşılaştığınızda paniğe kapılmayın. Şu adımları takip edin:
- Sorunu Tanımla: Program hiç mi çalışmıyor, yavaş mı, yoksa hata mı veriyor?
- Canlı İzle (
strace -p): Program çalışıyorsa bağlan. Çalışmıyorsastrace my_programile başlat. - Filtrele (
-e): Çok fazla gürültü varsa sadece ilgili olayları (-e openveya-e trace=network) izle. - Zamana Bak (
-tt): İşlemler arasında uzun beklemeler var mı? - Özetle (
-c): Sorun genel bir performans darboğazı mı?
flowchart TD
Start(Sorun Var!) --> Check{Program Çalışıyor mu?}
Check -- Evet --> Attach[Canlı İzle<br>strace -p PID]
Check -- Hayır --> Run[Başlat<br>strace ./program]
Attach --> Filter{Çok Gürültü Var mı?}
Run --> Filter
Filter -- Evet --> FilterAction[Filtrele<br>-e trace=network/file]
Filter -- Hayır --> TimeCheck{Yavaşlık Var mı?}
FilterAction --> TimeCheck
TimeCheck -- Evet --> TimeAction[Zamanı İncele<br>-tt veya -T]
TimeCheck -- Hayır --> Stats[Özeti Gör<br>-c]
TimeAction --> Solved((Çözüm))
Stats --> Solved
style Start stroke:#fff,color:#fff
style Solved stroke:#fff,color:#fff
📝 Mini strace Cheat Sheet
Yazıyı bitirirken, bu komutları bir yere not edin. Günün birinde hayatınızı kurtaracaklar.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# 1. En Temel Kullanım (Canlı İzle)
strace -p <PID>
# 2. Hata Mesajlarını Tam Oku
strace -p <PID> -s 80 -e write
# 3. Sadece Dosya İşlemlerini Gör
strace -e trace=file my_program
# 4. Sadece Ağ İşlemlerini Gör
strace -e trace=network my_program
# 5. Alt Süreçleri de İzle (Örn: Nginx, Chrome)
strace -f -p <PID>
# 6. Performans Analizi (Özet Tablo)
strace -c -p <PID>
# 7. Çıktıyı Dosyaya Kaydet
strace -o log.txt my_program
# 8. Dosya İsimlerini Gör (File Descriptors)
strace -y -p <PID>
🔮 Bir Sonraki Adım: Gücün Karanlık Tarafı
strace şu an elinizde bir sihirli değnek gibi görünüyor olabilir. Her sorunu çözebilecek, her kapıyı açabilecek bir anahtar…
Ama dikkat!
Her süper gücün bir bedeli vardır. Production ortamında dikkatsizce çalıştırılan bir strace komutu, sisteminizi saniyeler içinde kilitleyebilir veya müşterilerinizin kredi kartı bilgilerini log dosyalarına saçabilir.
Bir sonraki yazıda, bu güçlü ilacın yan etkilerini, strace‘in göremediği kör noktaları ve “Gözlemci Etkisi” yüzünden nasıl kendi ayağımıza sıkabileceğimizi konuşacağız.
🚀 Serinin Devam Yazısı: strace ile Debugging Ne Zaman Yeterli Değildir? Sınırlar, Riskler ve Gözlemcinin Laneti

