Post

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'un Röntgenini Çekmek: strace ile Sistem Çağrıları Analizi

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 nedir ve ne işe yarar soruları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, -c gibi 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 durumda perf, gdb veya eBPF gibi 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:

  1. Müşteri (Programlarınız): Web tarayıcınız, Spotify veya yazdığınız Python kodu. Masada otururlar ve yemek (kaynak) isterler.
  2. 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.
  3. 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

Desktop View

🐦 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 (veya yum)
  • 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’i top veya ps komutları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:

  1. Syscall Adı (open): Garsona verilen sipariş. “Dosya aç”.
  2. Argümanlar ("/etc/hosts", O_RDONLY): Siparişin detayları. “Hangi dosya? /etc/hosts. Hangi modda? Sadece okuma (Read Only).”
  3. 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:

KodAnlamıOlası Sebep
ENOENTDosya veya dizin yokYanlış dosya yolu, silinmiş dosya.
EACCESErişim engellendiYetki hatası (chmod / chown sorunu).
EPERMİşlem reddedildiGenellikle sudo yetkisi eksikliği.
ECONNREFUSEDBağlantı reddedildiKarşı sunucu kapalı veya yanlış port/IP.
ETIMEDOUTZaman aşımıAğ yavaşlığı, Firewall engellemesi.
ENOSPCDisk doluDisk alanı bitmiş, veri yazılamıyor.
EEXISTDosya zaten varVar olan bir dosyayı yeniden oluşturma girişimi.
EAGAINKaynak geçici olarak yokSistem ç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 standart grep, 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 grep kullanacaksanız, tamponlamayı kapatın: strace my_program 2>&1 | grep --line-buffered "open"

Ama en iyisi her zaman strace‘in kendi -e filtresini kullanmaktır.

🧪 Kendin Dene: Kayıp Dosya Vakası Aşağıdaki kodu config_okur.py olarak 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ıda openat(..., "/tmp/olmayan_config.ini", ...) = -1 ENOENT satı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.

  1. Sadece Sınırı Görür: strace sadece User Space ile Kernel Space arasındaki konuşmaları (System Calls) görür. Programın kendi içindeki mantık hatalarını, if-else bloklarını veya değişken değerlerini göremez.
  2. 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 durumda strace işe yaramaz.
  3. Deadlock (Kilitlenme): Programın kendi içindeki thread kilitlenmeleri syscall üretmeyebilir.

Hangi Sorun İçin Hangi Araç?

Sorun TipiDoğ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.

Özellikstraceltrace
Görüş AlanıSystem Calls (Kernel Space)Library Calls (User Space)
Örnekopen(), 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ğin read() çı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:

  1. 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.
  2. Hassas Veri Sızıntısı: -s 10000 ve -e write gibi 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.

  1. Semptom vs Sebep: printf size kodun nerede durduğunu gösterir. strace ise neden durduğunu (Örn: “Disk dolu No space left on device”) gösterir.
  2. Kapalı Kutular: Kaynak koduna sahip olmadığınız veya değiştiremediğiniz bir Veritabanı sunucusunu debug ederken printf kullanamazsınız. Ancak strace ile ona “dışarıdan” bakabilirsiniz.
  3. Hız: Kodu değiştir -> Derle -> Çalıştır döngüsü vakit kaybıdır. strace ile 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.

ÖzellikstraceeBPF (bcc / bpftrace)
Hız / PerformansYavaş (Yüksek Overhead)Çok Hızlı (Düşük Overhead)
Kullanım KolaylığıKolay (Tek komut)Orta/Zor (Script yazmak gerekebilir)
Görüş AlanıSadece SyscallTü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:

  1. Sorunu Tanımla: Program hiç mi çalışmıyor, yavaş mı, yoksa hata mı veriyor?
  2. Canlı İzle (strace -p): Program çalışıyorsa bağlan. Çalışmıyorsa strace my_program ile başlat.
  3. Filtrele (-e): Çok fazla gürültü varsa sadece ilgili olayları (-e open veya -e trace=network) izle.
  4. Zamana Bak (-tt): İşlemler arasında uzun beklemeler var mı?
  5. Ö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

This post is licensed under CC BY 4.0 by the author.