Even support for D? Wow they thought of everything
Show HN: CodeTracer – A time-traveling debugger implemented in Nim and Rust
31–40 of 59 posts
Re: Show HN: CodeTracer – A time-traveling debugger implemented in Nim and Rust
#32Congrats on your release! One question I have is, how exactly does it record and what are the boundaries of the recording? For example does it only record the userland execution of a single process, or does it have broader boundaries like including kernel code and/or execution of multiple processes? How does it handle shared memory regions that may be modified outside of the recording?
For the scripting languages and smart contract/ZK languages, we instrument the interpreters using high level hooking API-s or direct patches, and we produce a trace.
For system languages, we directly build on top of RR[1] recordings for now: RR can record multiple processes, and it works in userland. IIRC it doesn't support modifications of shared memory outside of the recording. It's very well documented in their paper: Engineering Record And Replay For Deployability: Extended Technical Report[2].
Re: Show HN: CodeTracer – A time-traveling debugger implemented in Nim and Rust
#33Earlier quoted context omitted.
The planned RR recordings integration is what I'm most excited about though. Having this capability for systems languages like Rust and C++ would be transformative for complex debugging scenarios where you're often forced to restart debugging sessions from scratch after stepping past a crucial point.
This happens all the time and is super irksome. Being able to step backwards as well as forwards is super cool. Also, being able to do that with a loop using a slider is cool.
Re: Show HN: CodeTracer – A time-traveling debugger implemented in Nim and Rust
#34Earlier quoted context omitted.
This happens all the time and is super irksome. Being able to step backwards as well as forwards is super cool. Also, being able to do that with a loop using a slider is cool.
I need a VSCode extension for this. But alas, it's just sitting in their roadmap... Typical. Guess I'll have to roll up my sleeves and build one myself. Not like I have enough on my plate already. At least their trace files are in an open format, so it shouldn't be impossible to hook into the VS Code debugging API.
Re: Show HN: CodeTracer – A time-traveling debugger implemented in Nim and Rust
#35Re: Show HN: CodeTracer – A time-traveling debugger implemented in Nim and Rust
#36I loved debugging with that when I was working on react web app.
Wish there was something like this for react native :(
Re: Show HN: CodeTracer – A time-traveling debugger implemented in Nim and Rust
#37Looks really cool, but in production systems, won't the trace files proliferate at extreme speed? How would you correlate the files to a certain session for user identification for example?
Especially since the trace files are in .json. [0] [0] https://github.com/metacraft-labs/runtime_tracing#format
However, some of the important optimizations, that we're preparing are not related so much to the format, but to record more specific things and reconstruct more in the postprocessing.
Re: Show HN: CodeTracer – A time-traveling debugger implemented in Nim and Rust
#38If you are using Clojure or ClojureScript check out FlowStorm: https://www.flow-storm.org/
Re: Show HN: CodeTracer – A time-traveling debugger implemented in Nim and Rust
#39Thank you for building up the nim ecosystem.
Re: Show HN: CodeTracer – A time-traveling debugger implemented in Nim and Rust
#40Any chance of something like this being available for Java/Kotlin on JVM?
Fray is a controlled concurrency testing tool for the JVM that supports record and replay. It could be a perfect backend for codetracer. (I'm the author of Fray)