- 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
Hacker News yorumları
Harika. Uzun zaman önce Intel işlemci tasarımcılarına özellik talebinde bulunma fırsatım olmuştu
debugsürümünü yeniden derledikNoir desteği mantıklı, çünkü ZK kanıtlarında execution trace özellikle değerli
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
Güzel görünüyor ama production sistemlerde trace dosyaları çok hızlı büyüyecektir
Nim ekosistemini geliştirdiğiniz için teşekkürler
Çok heyecan verici. Open Collective üzerinden zaten bağış yaptım
Çıkışı kutlarım. Şimdiye kadar harika iş çıkardınız