<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Hacker News: gregthelaw</title><link>https://news.ycombinator.com/user?id=gregthelaw</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Wed, 15 Apr 2026 02:19:17 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=gregthelaw" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by gregthelaw in "Demystifying Debuggers"]]></title><description><![CDATA[
<p>If you'll excuse the shameless self promotion, I gave a talk at C++Now last year on how time travel debuggers work: <a href="https://www.youtube.com/watch?v=NiGzdv84iDE" rel="nofollow">https://www.youtube.com/watch?v=NiGzdv84iDE</a><p>(Warning: contains me trying to play Doom :)</p>
]]></description><pubDate>Wed, 11 Jun 2025 14:30:04 +0000</pubDate><link>https://news.ycombinator.com/item?id=44248016</link><dc:creator>gregthelaw</dc:creator><comments>https://news.ycombinator.com/item?id=44248016</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44248016</guid></item><item><title><![CDATA[New comment by gregthelaw in "UndoDB – The interactive time travel debugger for Linux C/C++ for debugging"]]></title><description><![CDATA[
<p>Undo founder here. I just got a slack from one of our marketing team who is thrilled you appreciate their work. :-)<p>Our customers are top tier tech companies and our users are among the smartest engineers on the planet. I'm proud of our marketing, but no-one is going to spend a bunch of money with us just because of that.<p>So there must be something else in it I guess ;-)</p>
]]></description><pubDate>Sat, 24 May 2025 09:06:49 +0000</pubDate><link>https://news.ycombinator.com/item?id=44079817</link><dc:creator>gregthelaw</dc:creator><comments>https://news.ycombinator.com/item?id=44079817</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44079817</guid></item><item><title><![CDATA[New comment by gregthelaw in "UndoDB – The interactive time travel debugger for Linux C/C++ for debugging"]]></title><description><![CDATA[
<p>Undo co-founder here. rr is indeed awesome. If it works for your use-case, you should use it!<p>Undo is mostly used by companies whose world is complex enough that rr doesn't work for them, and they understand how powerful time travel debugging is.<p>There has now been a LOT of engineering invested by a lot of very smart people into Undo, so it does also have a lot of polish and nice features.<p>But honestly, if rr is working for you, that's great. I'm just glad you're not doing printf debugging the whole time :)</p>
]]></description><pubDate>Sat, 24 May 2025 09:00:35 +0000</pubDate><link>https://news.ycombinator.com/item?id=44079786</link><dc:creator>gregthelaw</dc:creator><comments>https://news.ycombinator.com/item?id=44079786</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44079786</guid></item><item><title><![CDATA[New comment by gregthelaw in "UndoDB – The interactive time travel debugger for Linux C/C++ for debugging"]]></title><description><![CDATA[
<p>Undo founder here. We've been at this for getting on 20 years now. Originally it cost $295 for a perpetual license. Eventually we understood that the majority of developers (actually employers of developers) will pay $0. But some are happy to pay for tooling, as long as they're confident they'll get a many multiples return-on-investment. Hence our pricing. Happily, enough do that we can run a modest but profitable business (40+ people). Customer churn is practically zero.<p>Why do people pay for Undo when they can get rr -- which is also really good -- for free? Those whose code or environment is big enough and complex enough that rr doesn't work for them, and they understand how powerful time travel debugging is. If rr works for you, you should use it. This includes most independent developers.<p>If rr can work for you and you're still not using any kind of time travel debugging, you have effective tied one hand behind your own back! If you're independent (incl student or academic) and rr doesn't work for you, get in touch -- we give free licenses for academic and certain other use cases.<p>There is a wider thing here about software companies paying for dev tooling. So many companies over the years who made really cool things who couldn't make their business work.</p>
]]></description><pubDate>Sat, 24 May 2025 08:52:17 +0000</pubDate><link>https://news.ycombinator.com/item?id=44079765</link><dc:creator>gregthelaw</dc:creator><comments>https://news.ycombinator.com/item?id=44079765</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44079765</guid></item><item><title><![CDATA[New comment by gregthelaw in "Show HN: Uscope, a new Linux debugger written from scratch"]]></title><description><![CDATA[
<p>If it's been a long time I recommend taking another look. TBF you can tell it hasn't had the millions of dollars of investment that the Microsoft debuggers have, but still it's come a long way over the last 5-10 years.<p>e.g. it now has decent multi-process support.<p>I agree MI is kinda horrid, but no need for it these days, you can do everything via the Python API, and the modern equivalent is Debug Adapter Protocol which GDB claims to support now (although I haven't tried).<p>There a million frontends, including both Visual Studio (via ssh) and VSCode, if you like those.<p>The perfect developer tool does not exist, but I believe that if you're debugging native code on Linux more than a few times per year then you should really know how to drive GDB. It won't always be the best tool for the job, but it often will be.</p>
]]></description><pubDate>Sat, 01 Feb 2025 10:09:11 +0000</pubDate><link>https://news.ycombinator.com/item?id=42897314</link><dc:creator>gregthelaw</dc:creator><comments>https://news.ycombinator.com/item?id=42897314</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42897314</guid></item><item><title><![CDATA[New comment by gregthelaw in "Show HN: Uscope, a new Linux debugger written from scratch"]]></title><description><![CDATA[
<p>Exactly right. Undo has "thread fuzzing" which is similar concept to chaos mode, but more targeted.</p>
]]></description><pubDate>Sat, 01 Feb 2025 09:52:39 +0000</pubDate><link>https://news.ycombinator.com/item?id=42897238</link><dc:creator>gregthelaw</dc:creator><comments>https://news.ycombinator.com/item?id=42897238</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42897238</guid></item><item><title><![CDATA[New comment by gregthelaw in "Show HN: Uscope, a new Linux debugger written from scratch"]]></title><description><![CDATA[
<p>Co-founder of Undo here. This is a common misunderstanding, and just not true -- neither for Undo nor rr. Most races will reproduce at least as easily in Undo, especially if you use our "thread fuzzing" feature (rr has something similar, called chaos mode).<p>Sure, there will always be some races/timing issues that just won't repro under recording (Heisenberg principal and all that), but in fact most races are _more likely_ to occur under recording. Part of this is because you slow down the process being recorded, which is equivalent to speeding up the outside world.<p>And of course, when you do have your gnarly timing issue captured in a recording, it's usually trivial to root-cause exactly what happened. Our customers tell us that races and timing issues are a major use-case.</p>
]]></description><pubDate>Sat, 01 Feb 2025 09:50:46 +0000</pubDate><link>https://news.ycombinator.com/item?id=42897234</link><dc:creator>gregthelaw</dc:creator><comments>https://news.ycombinator.com/item?id=42897234</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42897234</guid></item><item><title><![CDATA[New comment by gregthelaw in "Show HN: Uscope, a new Linux debugger written from scratch"]]></title><description><![CDATA[
<p>Congrats on this work -- writing a debugger from scratch is a big job. I have cloned the repo, will take a proper look this w/e.</p>
]]></description><pubDate>Fri, 31 Jan 2025 19:51:59 +0000</pubDate><link>https://news.ycombinator.com/item?id=42891159</link><dc:creator>gregthelaw</dc:creator><comments>https://news.ycombinator.com/item?id=42891159</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42891159</guid></item><item><title><![CDATA[New comment by gregthelaw in "Show HN: Uscope, a new Linux debugger written from scratch"]]></title><description><![CDATA[
<p>I haven't tried UScope yet (I shall), but I don't agree with you about GDB. I don't find it especially buggy unless doing niche things like non-stop debugging -- I guess you may well have a different experience though.<p>I think the UI is much maligned unfairly. It has a few quirks, but ever used git? For the most part it's fairly consistent and well thought through.<p>By terrible API you mean the Python? I admit it can be a bit verbose, but gives me what I find I need.<p>What features do you most miss? My experience is that most people use like 1% of the features, so not sure adding more will make a big difference to most people.</p>
]]></description><pubDate>Fri, 31 Jan 2025 18:48:46 +0000</pubDate><link>https://news.ycombinator.com/item?id=42890398</link><dc:creator>gregthelaw</dc:creator><comments>https://news.ycombinator.com/item?id=42890398</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42890398</guid></item><item><title><![CDATA[New comment by gregthelaw in "Debugging: Indispensable rules for finding even the most elusive problems (2004)"]]></title><description><![CDATA[
<p>I would say yes, your CI should accumulate all of those regression tests. Where I work we now have many, many thousands of regression test cases. There's a subset to be run prior to merge which runs in reasonable time, but the full CI just cycles through.<p>For this to work all the regression tests must be fast, and 100% reliable. It's worth it though. If the mistake was made once, unless there's a regression test to catch it, it'll be made again at some point.</p>
]]></description><pubDate>Mon, 13 Jan 2025 21:04:08 +0000</pubDate><link>https://news.ycombinator.com/item?id=42689285</link><dc:creator>gregthelaw</dc:creator><comments>https://news.ycombinator.com/item?id=42689285</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42689285</guid></item><item><title><![CDATA[New comment by gregthelaw in "Debugging: Indispensable rules for finding even the most elusive problems (2004)"]]></title><description><![CDATA[
<p>But if you don't squash, doesn't this render git bisect almost useless?<p>I think every commit that gets merged to main should be an atomic believed-to-work thing. Not only does this make bisect way more effective, but it's a much better narrative for others to read. You should write code to be as readable by others as possible, and your git history likewise.</p>
]]></description><pubDate>Mon, 13 Jan 2025 20:59:22 +0000</pubDate><link>https://news.ycombinator.com/item?id=42689210</link><dc:creator>gregthelaw</dc:creator><comments>https://news.ycombinator.com/item?id=42689210</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42689210</guid></item><item><title><![CDATA[New comment by gregthelaw in "Debugging: Indispensable rules for finding even the most elusive problems (2004)"]]></title><description><![CDATA[
<p>I've spent the past two decades working on a time travel debugger so obviously I'm massively biassed, but IMO most programmers are not nearly as proficient in the available debug tooling as they should be. Consider how long it takes to pick up a tool so that you at least have a vague understanding of what it can do, and compare to how much time a programmer spends debugging. Too many just spend hour after hour hammering out printf's.</p>
]]></description><pubDate>Mon, 13 Jan 2025 20:54:07 +0000</pubDate><link>https://news.ycombinator.com/item?id=42689117</link><dc:creator>gregthelaw</dc:creator><comments>https://news.ycombinator.com/item?id=42689117</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42689117</guid></item><item><title><![CDATA[New comment by gregthelaw in "Debugging: Indispensable rules for finding even the most elusive problems (2004)"]]></title><description><![CDATA[
<p>Related: write down what you're seeing (or rather, what you _think_ you're seeing), and so with pen and paper, not the keyboard. You can type way faster than you can write, and the slowness of writing makes you think harder about what you think you know. Often you do the know the answer, you just have to tease it out. Or there are gaps in your knowledge that you hadn't clocked. After all, an assumption is something you don't realise you've made.<p>This also works well in conjunction with debug tooling -- the tooling gives you the raw information, writing down that information helps join the dots.</p>
]]></description><pubDate>Mon, 13 Jan 2025 20:47:10 +0000</pubDate><link>https://news.ycombinator.com/item?id=42688998</link><dc:creator>gregthelaw</dc:creator><comments>https://news.ycombinator.com/item?id=42688998</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42688998</guid></item><item><title><![CDATA[New comment by gregthelaw in "Debugging: Indispensable rules for finding even the most elusive problems (2004)"]]></title><description><![CDATA[
<p>I love the "if you didn't fix it, it ain't fixed". It's too easy to convince yourself something is fixed when you haven't fully root-caused it. If you don't understand exactly how the thing your seeing manifested, papering over the cracks will only cause more pain later on.<p>As someone who has been working on a debugging tool (<a href="https://undo.io" rel="nofollow">https://undo.io</a>) for close to two decades now, I totally agree that it's just weird how little attention debugging as a whole gets. I'm somewhat encouraged to see this topic staying near the top of hacker news for as long as it has.</p>
]]></description><pubDate>Mon, 13 Jan 2025 20:37:45 +0000</pubDate><link>https://news.ycombinator.com/item?id=42688850</link><dc:creator>gregthelaw</dc:creator><comments>https://news.ycombinator.com/item?id=42688850</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42688850</guid></item><item><title><![CDATA[New comment by gregthelaw in "Debugging: Indispensable rules for finding even the most elusive problems (2004)"]]></title><description><![CDATA[
<p>It's a great talk! I have stolen your "if you smell smoke, find the source" advice and put it in some of my own talks on the subject.</p>
]]></description><pubDate>Mon, 13 Jan 2025 20:35:46 +0000</pubDate><link>https://news.ycombinator.com/item?id=42688820</link><dc:creator>gregthelaw</dc:creator><comments>https://news.ycombinator.com/item?id=42688820</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42688820</guid></item><item><title><![CDATA[New comment by gregthelaw in "Seer: A GUI front end to GDB for Linux"]]></title><description><![CDATA[
<p>I have a bunch of (36 if you're counting :) short videos and blog posts introducing the advanced features of GDB: <a href="https://undo.io/resources/gdb-watchpoint/" rel="nofollow">https://undo.io/resources/gdb-watchpoint/</a></p>
]]></description><pubDate>Fri, 15 Nov 2024 15:47:57 +0000</pubDate><link>https://news.ycombinator.com/item?id=42147921</link><dc:creator>gregthelaw</dc:creator><comments>https://news.ycombinator.com/item?id=42147921</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42147921</guid></item><item><title><![CDATA[New comment by gregthelaw in "Seer: A GUI front end to GDB for Linux"]]></title><description><![CDATA[
<p>Just yesterday I gave a talk at MeetingC++ in Berlin on debugging multithreaded code. It's amazing how few developers know anything beyond the very basic of their debugger. If all you know is print, break, continue, next and then you dismiss the debugger as "not very useful" then you've not made a judgement based on information but on initial reaction.</p>
]]></description><pubDate>Fri, 15 Nov 2024 15:46:23 +0000</pubDate><link>https://news.ycombinator.com/item?id=42147908</link><dc:creator>gregthelaw</dc:creator><comments>https://news.ycombinator.com/item?id=42147908</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42147908</guid></item><item><title><![CDATA[New comment by gregthelaw in "Seer: A GUI front end to GDB for Linux"]]></title><description><![CDATA[
<p>You need a time travelling debugger!<p><a href="https://undo.io/" rel="nofollow">https://undo.io/</a><p><a href="https://rr-project.org/" rel="nofollow">https://rr-project.org/</a><p><a href="https://learn.microsoft.com/en-us/windows-hardware/drivers/debuggercmds/time-travel-debugging-overview" rel="nofollow">https://learn.microsoft.com/en-us/windows-hardware/drivers/d...</a></p>
]]></description><pubDate>Fri, 15 Nov 2024 15:43:55 +0000</pubDate><link>https://news.ycombinator.com/item?id=42147889</link><dc:creator>gregthelaw</dc:creator><comments>https://news.ycombinator.com/item?id=42147889</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42147889</guid></item><item><title><![CDATA[New comment by gregthelaw in "No more Heisenbugs: lock-free fast logging library"]]></title><description><![CDATA[
<p>Sometimes printf debugging is all you have available. But printf can be lousy for debugging race conditions because it's pretty slow and worse, libc's printf takes a lock and so introduces a synchronisation point. So I made a simple library that is both fast (~5ns on a half-decent machine) and lock-free.<p>It doesn't completely defeat the Heisenberg principle of course, but you can in practice add a decent amount of logging without affecting timing in a meaningful way.<p>Enjoy!</p>
]]></description><pubDate>Wed, 06 Mar 2024 21:07:04 +0000</pubDate><link>https://news.ycombinator.com/item?id=39621465</link><dc:creator>gregthelaw</dc:creator><comments>https://news.ycombinator.com/item?id=39621465</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=39621465</guid></item><item><title><![CDATA[No more Heisenbugs: lock-free fast logging library]]></title><description><![CDATA[
<p>Article URL: <a href="https://github.com/undoio/l3">https://github.com/undoio/l3</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=39621464">https://news.ycombinator.com/item?id=39621464</a></p>
<p>Points: 2</p>
<p># Comments: 1</p>
]]></description><pubDate>Wed, 06 Mar 2024 21:07:03 +0000</pubDate><link>https://github.com/undoio/l3</link><dc:creator>gregthelaw</dc:creator><comments>https://news.ycombinator.com/item?id=39621464</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=39621464</guid></item></channel></rss>