{"id":109,"date":"2026-11-10T19:29:04","date_gmt":"2026-11-10T08:29:04","guid":{"rendered":"https:\/\/davidshoon.com\/?p=109"},"modified":"2026-11-10T19:29:04","modified_gmt":"2026-11-10T08:29:04","slug":"drudgets-offerings-debugging-tools-for-the-professional-developer","status":"publish","type":"post","link":"https:\/\/davidshoon.com\/?p=109","title":{"rendered":"Drudget&#8217;s offerings &#8211; debugging tools for the professional developer."},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Obligatory notice: I am the CEO of Drudget Pty Ltd (www.drudget.com.au), and I&#8217;m explaining Drudget&#8217;s tools here, and comparing them to open source alternatives.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">If you aren&#8217;t using these tools (whether they&#8217;re Drudget&#8217;s offerings or open source) and you&#8217;re coding in C\/C++, then there&#8217;s a chance you&#8217;re wasting valuable time in debugging.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The table below lists Drudget&#8217;s offerings compared to open source alternatives &#8212; I have yet to give product names to Drudget&#8217;s offerings, so the name may change in the future, but the functionality is given in the table.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td>Feature\/Bug<\/td><td>Drudget&#8217;s offering<\/td><td>Open Source Alternatives<\/td><\/tr><tr><td>Deadlocks<\/td><td>Drudget&#8217;s Run-time deadlock detector and resolver (resolves deadlocks and prevents them from forming).<\/td><td>Helgrind (as part of Valgrind), a run-time deadlock detector. (Doesn&#8217;t resolve them.)<\/td><\/tr><tr><td>Memory leaks<\/td><td>Drudget&#8217;s garbage collector (memory leak detector and garbage collector all-in-one). <\/td><td>Valgrind (detects memory leaks, doesn&#8217;t garbage collect them).<\/td><\/tr><tr><td>Heap corruption (heap overflow, use-after-free, double free)<\/td><td>Drudget&#8217;s heap protector.<br><br>Guarantees heap overflows never work (segfaults immediately), use-after-free is never able to re-use freed page (segfaults immediately), and double free causes a segfault.<br><br>These segfaults are immediate, as they operate on protected page mappings, and guarantees no control is ever given to an attacker.<\/td><td>Open source competitors:<br><br>For debugging:<br><br>* ASAN (libasan).<br><br>* Valgrind.<br><br>For production:<br><br>*hardened_malloc.<br><br>* Scudo.<br><br>Either:<br><br>* Electric fence. (Original idea and no longer maintained).<\/td><\/tr><tr><td>Self-healing code (detecting buffer overflows and fixing them on the fly)<\/td><td>Drudget&#8217;s prototype self-healing code. Uses state-of-the-art assembly opcode injection, and a WAF (web application firewall) blocks input that exceed that buffer size. <\/td><td>Open source doesn&#8217;t exist.<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">If you don&#8217;t use these tools, here are some typical debug times that a developer might take (whereas if they used the tools above, whether it was Drudget&#8217;s or open source, it would be instant time to find the location):<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td>Bug type<\/td><td>Time to find line of code responsible for bug<\/td><\/tr><tr><td>Deadlock<\/td><td>Anywhere between when you test the code path (if it happens instantly, you are very lucky), otherwise it could happen hours or days or even weeks running &#8212; as deadlocks require resources to be in a cyclic graph and locked simultaneously, so there&#8217;s a race condition that is required for that. Average time saved really depends on how often you test that code path whilst running the program &#8212; which is annoying.<br><br>Answer: 1 hour+ to several days.<\/td><\/tr><tr><td>Memory leaks<\/td><td>Slow memory leaks are hard to find, and may take running the program for days before anything obvious in memory usage shows up.<br><br>Answer: within an hour to days, depending on if you know how to reproduce it.<\/td><\/tr><tr><td>Stack buffer overflows<\/td><td>Instant segfault usually (due to violation of canary), but if carefully crafted, the attacker could gain arbitrary code execution instead. (i.e. if they are able to leak and re-use the canary).<\/td><\/tr><tr><td>Heap buffer overflows<\/td><td>Silent memory corruption in some cases, or an attacker could get arbitrary code execution. Otherwise instant segfault.<\/td><\/tr><tr><td>Use-after-free<\/td><td>Silent memory corruption, can lead to segfault eventually or read\/write primitives which could alter the program&#8217;s data or flow.<\/td><\/tr><tr><td>Double free<\/td><td>Instant segfault usually, depending on allocator. Otherwise could lead to arbitrary code execution.<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">As a developer in other companies, I&#8217;ve used my Drudget&#8217;s tools personally to help me debug these types of bugs instantly, before any open source tool was available &#8212; most of the open source alternatives were developed after I developed these tools.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">It&#8217;s only recently (circa 2023) that I decided to start Drudget as a company to market these tools to the wider developer community. To be honest, I have not made any sales as of this writing, and I&#8217;m glad that&#8217;s the case &#8212; it almost implies that everyone is either using open source tools, or they have some other manner\/means of debugging these types of bugs, or they don&#8217;t care.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">However, if you&#8217;re stuck on a bug, and you don&#8217;t think the open source tools are adequate, take a look at <a href=\"https:\/\/drudget.com.au\" data-type=\"link\" data-id=\"drudget.com.au\">drudget.com.au<\/a> and email us.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Obligatory notice: I am the CEO of Drudget Pty Ltd (www.drudget.com.au), and I&#8217;m explaining Drudget&#8217;s tools here, and comparing them to open source alternatives. If you aren&#8217;t using these tools (whether they&#8217;re Drudget&#8217;s offerings or open source) and you&#8217;re coding in C\/C++, then there&#8217;s a chance you&#8217;re wasting valuable time in debugging. The table below [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-109","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/davidshoon.com\/index.php?rest_route=\/wp\/v2\/posts\/109","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/davidshoon.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/davidshoon.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/davidshoon.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/davidshoon.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=109"}],"version-history":[{"count":1,"href":"https:\/\/davidshoon.com\/index.php?rest_route=\/wp\/v2\/posts\/109\/revisions"}],"predecessor-version":[{"id":110,"href":"https:\/\/davidshoon.com\/index.php?rest_route=\/wp\/v2\/posts\/109\/revisions\/110"}],"wp:attachment":[{"href":"https:\/\/davidshoon.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=109"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/davidshoon.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=109"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/davidshoon.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=109"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}