disclaimer - I work at Typemock and I am part of the Racer development team.
I saw a post today on Dev102.Com – Free Tool for Managed and Unmanaged Deadlock Detection.
The post is about a Visual Studio extension that help developer of managed and unmanaged code debug threaded code - Debug Inspector.
This extension enable viewing of thread and synchronization objects (such as locks) currently on the debugged application. I think that multi threaded programming is a must now that every simple desktop has at least two cores. The more concurrent programming becomes mainstream and well used the more tools (and languages) that help write better code shall appear.
There is one problem with using this extension – it helps see the deadlock the code is at right now and cannot find all of the deadlocks in the nor can it guarantee that our code is “deadlock free”.
Another deadlock finding tool I know very well is Typemock Racer which is free for now (At least until the Beta release) .
Racer uses both static and dynamic analysis to find deadlocks in managed code. And so by using Racer a developer can find all of the deadlocks in his code.
But unlike the Debug Inspector Racer cannot find deadlocks in unmanaged code and it cannot analyze continuous running code (endless loop).
So it seems that no “master tool” exist yet. Until such tool arrive we can use both tools together to write better multi-threaded code.