16 puan yazan GN⁺ 2025-03-07 | 1 yorum | WhatsApp'ta paylaş
  • Birçok programlama dilini destekleyen, kullanımı kolay bir zaman yolculuğu hata ayıklayıcısı
    • Program yürütmesini kaydederek paylaşılabilir, bağımsız trace dosyaları oluşturur; GUI ortamında yürütmede ileri-geri gezinebilir ve tüm bellek konumlarının geçmişini inceleyebilirsiniz
  • Zaman yolculuğu ile hata ayıklamanın avantajları
    • Yeniden üretmesi zor hataları kolayca çözebilirsiniz: Hatanın oluştuğu yürütme kaydı varsa, nedeni 30 dakika içinde belirlemek mümkündür
    • Bir değerin kökenini bilmek, hatayı çözmeyi kolaylaştırır
      • Programda beklenmedik bir çıktı oluştuğunda, ilgili olaya tıklayarak sorunun ortaya çıktığı noktayı anında görebilirsiniz
      • CodeTracer, o değerin nerede üretildiğini izleyerek birkaç adımda hatanın temel nedenini bulmanıza yardımcı olur
      • Program yürütmesinin herhangi bir anında özgürce ileri-geri giderek inceleme yapabilirsiniz
  • Tracing açık bir format kullanır; Ruby, Python gibi diller için destek projeleri sürmektedir
    • RR backend'i ile entegre olarak C/C++, Rust, Nim, D, Zig, Go, Fortran, FreePascal gibi sistem programlama dillerinde hata ayıklama desteği planlanıyor

CodeTracer'in başlıca özellikleri

Her şeyi bilen hata ayıklama (Omniscience)

  • Çalışma sırasında belirli bir kod satırında geçmiş ve gelecekteki değişken değerlerini anında görebilirsiniz
  • Döngü içindeki değişken değer değişimlerini kolayca inceleyebilirsiniz
  • Çalıştırılan kod ile çalıştırılmayan kod net biçimde ayrılır

Tracepoint'ler (Tracepoints)

  • Ek kod çalıştırmadan program içindeki değişken değerlerindeki değişimi anında görebilirsiniz
  • Koşullar, fonksiyon çağrıları, veri çıktıları vb. şeyleri kolayca ekleyerek hata ayıklama yapabilirsiniz

Çağrı izi (Call Trace)

  • Basit bir stack trace değil, program yürütmesinin tamamına ait fonksiyon çağrı ağacını sunar
  • Filtreleme ve sıralama ile kolayca gezilebilir

Durum ve geçmiş gezgini (State and History Explorer)

  • Tüm değişkenlerin değer değişim geçmişi izlenebilir
  • Bir değişkenin değerinin değiştiği kod noktasına anında gidilebilir
  • Kopyalanmış değişkenlerin özgün değerini otomatik izleyerek hata analizini kolaylaştırır

Olay günlüğü (Event Log)

  • Programdaki önemli olayları zaman sırasına göre düzenleyip sunar
  • Belirli bir olaya tıkladığınızda o ana ait koda anında gidebilirsiniz

Terminal çıktısı (Terminal Output)

  • stdout, stderr çıktıları terminal benzeri şekilde yeniden üretilerek kaydedilmiş program çıktısını incelemenizi sağlar
  • Tıkladığınızda çıktının oluştuğu tam kod konumuna gidebilirsiniz

Fareyle adımlama (Mouse Stepping)

  • Fare kullanarak kodun belirli bölümlerine anında gidebilirsiniz
    • Satıra gitme: fare orta tuşu (Ctrl+tıklama da mümkün)
    • Fonksiyona girme: fonksiyon çağrısını çift tıklayarak içine girme (Ctrl+Alt+tıklama da mümkün)
    • Ek seçenekler: sağ tık menüsünden ek özellikleri inceleyebilirsiniz

Scratchpad

  • Belirli bir andaki değişken değerlerini sabitleyerek karşılaştırma ve analiz yapabilirsiniz
  • Kod yürütme akışını görsel olarak karşılaştırarak sorunu analiz edebilirsiniz

CodeTracer CLI komutları

  • ct run <application> - Programı çalıştırır ve otomatik olarak kaydeder
  • ct record <application> - Trace dosyası oluşturur
  • ct replay - Oluşturulan trace dosyasını yeniden oynatır
  • ct replay <program-name> - Son çalıştırma kaydını yükler
  • ct replay --id=<trace-id> - Belirli bir trace ID ile çalıştırır
  • ct replay --trace-folder=<trace-folder> - Belirli bir klasördeki trace dosyasını çalıştırır
  • ct help / ct --help - Kullanılabilir komutları gösterir
  • ct version - Geçerli sürümü gösterir

Klavye kısayolları

  • Varsayılan kısayollar Visual Studio™ kullanıcılarına tanıdık gelecek şekilde hazırlanmıştır
  • Mevcut hata ayıklama işlevlerinin ters yönlü sürümleri Shift tuşuyla sunulur (F10 = "sonraki adım", Shift+F10 = "önceki adım")
  • ~/.config/codetracer/.config.yml dosyasını düzenleyerek kısayolları özelleştirebilirsiniz

1 yorum

 
GN⁺ 2025-03-07
Hacker News yorumları
  • Harika. Uzun zaman önce Intel işlemci tasarımcılarına özellik talebinde bulunma fırsatım olmuştu

    • Log zaman damgalaması için sistem tick zamanlayıcısı istemiştim, onu uyguladılar
    • Debug interrupt'ı tetikleyen bir bus maskesi ve değer register'ı da istemiştim, onu da uyguladılar
    • Jump source geçmişi istemiştim ama bu hayata geçirilmedi
    • O dönemde Intel, bus'ı kaydeden pahalı debug probları satıyordu
    • Benim jump geçmişi fikrim, çoğu kullanıcı için buna olan ihtiyacı ortadan kaldırabilirdi
    • Sonuçta gerçekleşmedi ve biz de trace eklemek için kodun debug sürümünü yeniden derledik
  • Noir desteği mantıklı, çünkü ZK kanıtlarında execution trace özellikle değerli

    • Python ve Ruby implementasyonlarını bekliyorum
    • Bu dillerin dinamik yapısı nedeniyle bazı bug'ları bulmak özellikle zor olabiliyor
    • Noir'ı deneyen biri var mı merak ediyorum
    • Trace mekanizmasının performans overhead'ini merak ediyorum
    • Web geliştirme için JavaScript/TypeScript desteği planlanıp planlanmadığını da merak ediyorum
  • Clojure veya ClojureScript kullanıyorsanız FlowStorm'a bakmanızı öneririm

  • Noir, SNARK kanıt sistemleri için alan odaklı bir dil

  • CodeTracer'ın neden iki dille yazıldığını merak ediyorum

  • Gerçekten çok hoşuma gitti. Hep böyle bir şey istemiştim

    • Daha sonra Python ile deneyeceğim
    • JS/TS desteği de olsa güzel olurdu
    • rr debugger'ın MacOS, Windows ve Android'i destekleyip desteklemediğini merak ediyorum
    • Genel uygulamalarda kayıt almanın ne kadar ağır olduğunu da merak ediyorum
    • LLM'in MCP sunucusu üzerinden bağlam sağlaması ya da görmek istediği değişken geçmişini seçebilmesi de güzel olurdu
    • Kayıt filtreleme özelliği de iyi olurdu
  • Güzel görünüyor ama production sistemlerde trace dosyaları çok hızlı büyüyecektir

    • Dosyaları belirli bir oturumla ilişkilendirmenin bir yolu var mı merak ediyorum
  • Nim ekosistemini geliştirdiğiniz için teşekkürler

  • Çok heyecan verici. Open Collective üzerinden zaten bağış yaptım

    • Ekip yetenekli insanlarla dolu
    • Zaman yolculuğu debug'ı için harika bir arayüzleri var
    • rr kullanılırsa macOS'ta çalışmayacaktır
    • Neyse ki lima VM'leri uzaktan kolayca oluşturulabiliyor
  • Çıkışı kutlarım. Şimdiye kadar harika iş çıkardınız

    • Şu anda benim için gerekli değil ama alternatif backend gelişimini ve ek programlama dili desteğini takip edeceğim
    • Teşekkürler