<story><title>rr – record and replay debugger for C/C++</title><url>https://rr-project.org/</url></story><parent_chain><item><author>laserbeam</author><text>Is it truly only for C&amp;#x2F;C++?&lt;p&gt;My limited understanding says a debugger needs: a list of symbols (.pdb files on windows, can&amp;#x27;t remember what they are on linux), understanding of syscalls and a few other similar things. I thought they don&amp;#x27;t care too much what generated the binaries they are debugging (obviously as long as it&amp;#x27;s native code).&lt;p&gt;Doesn&amp;#x27;t rr work with other languages like rust, zig, odin, nim, and similar ones? Obviously, I wouldn&amp;#x27;t expect it to work for python, js, c# and other languages with managed memory.</text></item></parent_chain><comment><author>AndyKelley</author><text>I use it with Zig. It&amp;#x27;s pretty handy in conjunction with Zig&amp;#x27;s allocator because it writes 0xaa bytes upon free and doesn&amp;#x27;t reuse addresses, so it very likely causes a crash, then you can put a watchpoint on the memory and rewind to the point where it got freed.</text></comment>
<story><title>rr – record and replay debugger for C/C++</title><url>https://rr-project.org/</url></story><parent_chain><item><author>laserbeam</author><text>Is it truly only for C&amp;#x2F;C++?&lt;p&gt;My limited understanding says a debugger needs: a list of symbols (.pdb files on windows, can&amp;#x27;t remember what they are on linux), understanding of syscalls and a few other similar things. I thought they don&amp;#x27;t care too much what generated the binaries they are debugging (obviously as long as it&amp;#x27;s native code).&lt;p&gt;Doesn&amp;#x27;t rr work with other languages like rust, zig, odin, nim, and similar ones? Obviously, I wouldn&amp;#x27;t expect it to work for python, js, c# and other languages with managed memory.</text></item></parent_chain><comment><author>vchuravy</author><text>We use RR a lot with Julia. It only gives you a GDB view of the system, but it can work with any interpreted or compiled language.&lt;p&gt;Things that don&amp;#x27;t work are drivers that update mapped addresses directly. An example of this is CUDA in order to replay one would need to model the driver interactions (and that&amp;#x27;s even before you get to UVM)&lt;p&gt;Another great thing is that RR records the process tree and so you can easily look at different processes spawned by your executable.</text></comment>