329 points by alehander42 3 days ago | 52 comments
We are presenting CodeTracer - a user-friendly time-traveling debugger designed to support a wide range of programming languages:
https://github.com/metacraft-labs/codetracer?tab=readme-ov-f...
CodeTracer records the execution of a program into a sharable self-contained trace file. You can load the produced trace files in a GUI environment that allows you to move forward and backward through the execution and to examine the history of all memory locations. They say a picture is worth a thousand words — well, a video is even better! Watch the demo below to see CodeTracer in action:
https://www.youtube.com/watch?v=xZsJ55JVqmU
The initial release is limited to the Noir programming language, but CodeTracer uses an open format for its trace files and we've started community-driven projects which aim to add support for Ruby and Python.
We are also developing an alternative back-end, capable of working with RR recordings, which will make CodeTracer suitable for debugging large-scale programs in a variety of system programming languages such as C/C++, Rust, Nim, D, Zig, Go, Fortran and FreePascal.
JoeAltmaier 3 days ago
Years and years ago I had the opportunity to give Intel processor designers (the time of the 386!) requests for features.
I requested a system tick timer for stamping logs (they did that), bus mask and value registers that triggered a debug interrupt on a match (they did that).
And a jump source history. Maybe 10 jumps back. So on a breakpoint you could figure out how you got there. A time travelling debug feature.
At this point Intel sold an expensive debug probe for recording the bus, you plugged this insane cable into the processor socket and it actually executed in their external hardware, recording every instruction.
My jmp history would have replaced much of that, obviating it's need for the vast majority of users.
Ah well, it didn't happen. So now we all rebuild code 'debug' so we can add tracing and tracking, disrupting the execution path, changing timing and code size and on and on.
I always regretted not getting that.
__init 3 days ago
[1] https://stackoverflow.com/questions/14670586/what-is-the-ove...
[2] The MSRs for LBRs (MSR_LASTBRANCH_*_{TO,FROM}_IP) and BTS (IA32_DS_AREA) are described in Volume 4, Section 2.2 of the SDM: "MSRS IN THE INTEL® CORE™ 2 PROCESSOR FAMILY". Core 2 was launched in 2006.
Veserv 3 days ago
Though they are sufficient to do what the person you responded to asked for which is just execution trace.
phire 2 days ago
cxie 3 days ago
Has anyone here tried using this with Noir yet? I'm curious about the performance overhead of the tracing mechanism, especially for longer-running programs. Also wondering if there are plans to support JavaScript/TypeScript for web development use cases.
cxie 3 days ago
alehander42 3 days ago
It's not ready yet, and it might be proprietary: it would be great if we can open source it, if we find a sustainable business model for that
Apofis 3 days ago
cxie 3 days ago
alehander42 3 days ago
dloss 3 days ago
01HNNWZ0MV43FF 3 days ago
michaelsbradley 3 days ago
Why and How zk-SNARK Works (2019)
conradludgate 3 days ago
slifin 3 days ago
udkl 3 days ago
alehander42 3 days ago