16 poin oleh GN⁺ 2025-03-07 | 1 komentar | Bagikan ke WhatsApp
  • debugger penjelajah waktu yang mudah digunakan dan mendukung berbagai bahasa pemrograman
    • Merekam eksekusi program untuk membuat file trace mandiri yang bisa dibagikan, lalu memungkinkan penelusuran maju-mundur dalam eksekusi di lingkungan GUI serta melihat riwayat semua lokasi memori
  • Keunggulan time travel debugging
    • Bug yang sulit direproduksi dapat diselesaikan dengan mudah: jika ada rekaman eksekusi saat bug terjadi, penyebabnya dapat diidentifikasi dalam waktu kurang dari 30 menit
    • Mengetahui asal suatu nilai membuat perbaikan bug menjadi lebih mudah
      • Saat output tak terduga muncul di program, Anda bisa mengklik event tersebut untuk langsung melihat titik terjadinya masalah
      • CodeTracer melacak dari mana nilai tersebut berasal sehingga akar penyebab bug dapat ditemukan hanya dengan beberapa langkah perpindahan
      • Anda dapat dengan bebas menelusuri maju dan mundur di titik mana pun dalam eksekusi program
  • Tracing menggunakan format terbuka, dan dukungan bahasa seperti Ruby dan Python sedang dalam pengembangan
    • Berencana mendukung debugging bahasa pemrograman sistem seperti C/C++, Rust, Nim, D, Zig, Go, Fortran, FreePascal, dan lainnya melalui integrasi dengan backend RR

Fitur utama CodeTracer

Debugging omniscient (Omniscience)

  • Dapat langsung melihat nilai variabel masa lalu dan masa depan pada baris kode tertentu saat eksekusi
  • Mudah menelusuri perubahan nilai variabel di dalam loop
  • Kode yang dieksekusi dan yang tidak dieksekusi dibedakan dengan jelas

Tracepoints

  • Dapat langsung melihat perubahan nilai variabel dalam program tanpa menjalankan kode tambahan
  • Memudahkan debugging dengan menambahkan kondisi, pemanggilan fungsi, output data, dan lainnya

Call Trace

  • Bukan sekadar stack trace sederhana, melainkan menyediakan pohon pemanggilan fungsi untuk seluruh eksekusi program
  • Mudah dijelajahi melalui pemfilteran dan pengurutan

Penjelajah status dan riwayat (State and History Explorer)

  • Dapat melacak riwayat perubahan nilai semua variabel
  • Dapat langsung berpindah ke titik kode tempat nilai variabel berubah
  • Secara otomatis melacak nilai asal dari variabel yang disalin untuk mempermudah analisis bug

Log event (Event Log)

  • Menyajikan event penting dalam program secara kronologis
  • Mengklik event tertentu akan langsung memindahkan Anda ke kode pada saat itu

Output terminal (Terminal Output)

  • Merekonstruksi output stdout, stderr seperti terminal sehingga Anda dapat memeriksa output program yang direkam
  • Dapat diklik untuk berpindah ke lokasi kode yang tepat tempat output tersebut dihasilkan

Mouse Stepping

  • Dapat langsung berpindah ke bagian tertentu dari kode menggunakan mouse
    • Pindah baris: klik tengah mouse (juga mendukung Ctrl+klik)
    • Masuk ke fungsi: klik ganda pemanggilan fungsi untuk masuk ke dalamnya (juga mendukung Ctrl+Alt+klik)
    • Opsi tambahan: fitur lain dapat dijelajahi melalui menu klik kanan

Scratchpad

  • Dapat menyematkan nilai variabel pada titik waktu tertentu untuk dibandingkan dan dianalisis
  • Membantu menganalisis masalah dengan membandingkan alur eksekusi kode secara visual

Perintah CLI CodeTracer

  • ct run <application> - menjalankan program dan merekamnya secara otomatis
  • ct record <application> - membuat file trace
  • ct replay - memutar ulang file trace yang telah dibuat
  • ct replay <program-name> - memuat rekaman eksekusi terakhir
  • ct replay --id=<trace-id> - menjalankan trace dengan ID tertentu
  • ct replay --trace-folder=<trace-folder> - menjalankan file trace dalam folder tertentu
  • ct help / ct --help - melihat perintah yang tersedia
  • ct version - memeriksa versi saat ini

Pintasan keyboard

  • Pintasan bawaan dibuat agar familier bagi pengguna Visual Studio™
  • Fungsi kebalikan dari fitur debugging yang ada disediakan bersama tombol Shift (F10 = "langkah berikutnya", Shift+F10 = "langkah sebelumnya")
  • Pintasan dapat disesuaikan dengan mengedit file ~/.config/codetracer/.config.yml

1 komentar

 
GN⁺ 2025-03-07
Komentar Hacker News
  • Keren. Dulu saya pernah punya kesempatan meminta fitur kepada para perancang prosesor Intel

    • Saya meminta system tick timer untuk stempel log, dan mereka mewujudkannya
    • Saya juga meminta bus mask dan value register yang memicu interrupt debug, dan itu juga diwujudkan
    • Saya meminta riwayat sumber lompatan, tetapi itu tidak terwujud
    • Saat itu Intel menjual probe debug mahal yang merekam bus
    • Riwayat lompatan saya kemungkinan bisa menghilangkan kebutuhan itu bagi sebagian besar pengguna
    • Pada akhirnya itu tidak terwujud, dan kami membangun ulang kode 'debug' untuk menambahkan tracing dan pelacakan
  • Dukungan Noir masuk akal karena jejak eksekusi sangat bernilai dalam pembuktian ZK

    • Saya berharap ada implementasi Python dan Ruby
    • Karena sifat dinamis bahasa-bahasa ini, terkadang bug jadi sangat sulit ditemukan
    • Saya penasaran apakah ada yang pernah memakai Noir
    • Saya juga penasaran dengan overhead performa dari mekanisme tracing ini
    • Saya juga ingin tahu apakah ada rencana dukungan JavaScript/TypeScript untuk pengembangan web
  • Jika Anda memakai Clojure atau ClojureScript, saya sarankan melihat FlowStorm

  • Noir adalah bahasa spesifik domain untuk sistem pembuktian SNARK

  • Saya penasaran kenapa CodeTracer ditulis dalam dua bahasa

  • Saya sangat menyukainya. Saya selalu menginginkan hal seperti ini

    • Nanti saya akan mencobanya dengan Python
    • Akan bagus jika ada dukungan JS/TS juga
    • Saya penasaran apakah debugger rr mendukung MacOS, Windows, dan Android
    • Saya juga penasaran seberapa berat perekamannya untuk aplikasi biasa
    • Akan menarik juga jika LLM bisa menyediakan konteks melalui server MCP, atau membiarkan LLM memilih riwayat variabel yang ingin dilihat
    • Fitur pemfilteran rekaman juga akan bagus
  • Terlihat keren, tetapi di sistem produksi file jejak akan membesar sangat cepat

    • Saya penasaran bagaimana cara mengaitkan file itu dengan sesi tertentu
  • Terima kasih telah membangun ekosistem Nim

  • Sangat menjanjikan. Saya sudah berdonasi di Open Collective

    • Timnya penuh orang-orang berbakat
    • Ada antarmuka keren untuk debugging perjalanan waktu
    • Jika memakai rr, ini tidak akan bisa berjalan di macOS
    • Untungnya, VM lima cukup mudah dibuat dari jarak jauh
  • Selamat atas peluncurannya. Sejauh ini kerjanya luar biasa

    • Saat ini saya belum membutuhkannya, tetapi saya akan terus memantau perkembangan backend alternatif dan dukungan bahasa pemrograman tambahan
    • Terima kasih