CodeTracer - Nim ve Rust ile geliştirilen zaman yolculuğu hata ayıklayıcısı
(github.com/metacraft-labs)- 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ıklamada mümkün) - Fonksiyona girme: fonksiyon çağrısını çift tıklayarak içine girme (
Ctrl+Alt+tıklamada mümkün) - Ek seçenekler: sağ tık menüsünden ek özellikleri inceleyebilirsiniz
- Satıra gitme: fare orta tuşu (
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 kaydederct record <application>- Trace dosyası oluştururct replay- Oluşturulan trace dosyasını yeniden oynatırct replay <program-name>- Son çalıştırma kaydını yüklerct replay --id=<trace-id>- Belirli bir trace ID ile çalıştırırct replay --trace-folder=<trace-folder>- Belirli bir klasördeki trace dosyasını çalıştırırct help / ct --help- Kullanılabilir komutları gösterirct 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
Shifttuşuyla sunulur (F10= "sonraki adım",Shift+F10= "önceki adım") ~/.config/codetracer/.config.ymldosyası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