How to debug application’s hang?

Today’s article will cover different approaches to debugging of application’s hangs. It contains six parts: preparations, debuggin with Delphi, debuggin with EurekaLog, debuggin with Process Explorer, debuggin with Threads Snapshot and a practical example.

New Exception class in Delphi 2009 and above

Exception class from SysUtils unit wasn’t changed since Delphi 2. It got new properties in Delphi 2009. So, I decided to give an overview of new capabilities of Exception class.

EurekaLog for Shareware developers

Today I want to browse EurekaLog’s features that is related to shareware developers.

EurekaLog’s anti-freeze feature

As you know, EurekaLog is a great tool to catch exceptions in your application. Though there are some cases which you want to consider as “bugs”, but there is no exception to catch it!
For example, consider your application is deadlocking. How about endless cycle which loads CPU core up to 100%? What about do not updating your UI for 10 minutes? Are those issues bugs or not?
Yes, all these cases are bugs in your application. But no exception is raised in such cases – your application simply stops working. Those cases can be very nasty and hard to diagnose, because your application doesn’t show any error message and doesn’t generate any log files.

So, how can you catch them?