Channels ▼
RSS

Tools

Undo Reversible Debugger Updated


Undo Software has released UndoDB 3.0, an updated version of the company's reversible debugger for Linux. Reversible debugging (also known as "replay" or "historical debugging") lets developers step or run their application backwards, enabling them to answer the question when debugging: 'How did that happen?'

According to Undo, UndoDB 3.0 can debug almost any Linux process, including those using multiple threads, asynchronous signal handlers, and shared memory. It supports reverse watchpoints, allowing programmers easily to find the root-cause of elusive memory-corruption bugs. UndoDB also allows the entire program state to be wound back to any point in the recorded execution history, yet records with a slow-down over native execution of just 1.7x. No recompilation or any other modifications are required to the process being debugged.

Reversible debugging gives the user control over time. To debug a program is to reason backwards from the point of failure to determine the cause of that failure. On the first page of The Practice of Programming, Brian Kernighan and Rob Pike give the following advice to programmers when debugging:

Reason back from the state of the crashed program to determine what could have caused this. Debugging involves backwards reasoning, like solving murder mysteries. Something impossible occurred, and the only solid information is that it really did occur. So we must think backwards from the result to discover the reasons.

Although UndoDB is not open source, developers can use the tool for free for non-commercial use. For professional use, UndoDB costs between $95 and $595 per seat. There is also a free 30-day evaluation version.


Related Reading


More Insights






Currently we allow the following HTML tags in comments:

Single tags

These tags can be used alone and don't need an ending tag.

<br> Defines a single line break

<hr> Defines a horizontal line

Matching tags

These require an ending tag - e.g. <i>italic text</i>

<a> Defines an anchor

<b> Defines bold text

<big> Defines big text

<blockquote> Defines a long quotation

<caption> Defines a table caption

<cite> Defines a citation

<code> Defines computer code text

<em> Defines emphasized text

<fieldset> Defines a border around elements in a form

<h1> This is heading 1

<h2> This is heading 2

<h3> This is heading 3

<h4> This is heading 4

<h5> This is heading 5

<h6> This is heading 6

<i> Defines italic text

<p> Defines a paragraph

<pre> Defines preformatted text

<q> Defines a short quotation

<samp> Defines sample computer code text

<small> Defines small text

<span> Defines a section in a document

<s> Defines strikethrough text

<strike> Defines strikethrough text

<strong> Defines strong text

<sub> Defines subscripted text

<sup> Defines superscripted text

<u> Defines underlined text

Dr. Dobb's encourages readers to engage in spirited, healthy debate, including taking us to task. However, Dr. Dobb's moderates all comments posted to our site, and reserves the right to modify or remove any content that it determines to be derogatory, offensive, inflammatory, vulgar, irrelevant/off-topic, racist or obvious marketing or spam. Dr. Dobb's further reserves the right to disable the profile of any commenter participating in said activities.

 
Disqus Tips To upload an avatar photo, first complete your Disqus profile. | View the list of supported HTML tags you can use to style comments. | Please read our commenting policy.
 

Video