{"version": "https://jsonfeed.org/version/1", "title": "/dev/posts/ - Tag index - debug", "home_page_url": "https://www.gabriel.urdhr.fr", "feed_url": "/tags/debug/feed.json", "items": [{"id": "http://www.gabriel.urdhr.fr/2015/11/25/rr-use-after-free/", "title": "Debugging use-after-free with RR reverse execution", "url": "https://www.gabriel.urdhr.fr/2015/11/25/rr-use-after-free/", "date_published": "2015-11-25T00:00:00+01:00", "date_modified": "2015-11-25T00:00:00+01:00", "tags": ["computer", "debug", "gdb", "rr", "simgrid"], "content_html": "<p><a href=\"http://rr-project.org/\">RR</a> is a very useful tool for debugging. It\ncan record the execution of a program and then replay the exact same\nexecution at will inside a debugger. One very useful extra power\navailable since 4.0 is the support for <a href=\"http://robert.ocallahan.org/2015/10/rr-40-released-with-reverse-execution.html\">efficient reverse\nexecution</a>\nwhich can be used to find the root cause of a bug in your program\nby rewinding time. In this example, we reverse-execute a program from a\ncase of use-after-free in order to find where the block of memory was\nfreed.</p>\n"}, {"id": "http://www.gabriel.urdhr.fr/2014/07/17/sample-watchpoint/", "title": "Sample watchpoints or breakpoints with GDB (and FlameGraph)", "url": "https://www.gabriel.urdhr.fr/2014/07/17/sample-watchpoint/", "date_published": "2014-07-17T00:00:00+02:00", "date_modified": "2014-07-17T00:00:00+02:00", "tags": ["gdb", "debug", "computer", "flamegraph"], "content_html": "<p>GDB can be used to get the stack each time a breakpoint is reached.</p>\n"}]}