Debugging the interactions between user-level and kernel code is nearly impossible without a toolset that understands both sets of code and can instrument the interactions.
For that toolset to be truly useful, it must be able to debug any area of a system, including areas that were not written with debugging in mind,
and do so without affecting system reliability. This tool must also have a minimum performance impact—ideally it should have no impact when not in use and a proportional impact during use.
The DTrace tool meets these requirements and provides a dynamic, safe, low-impact debugging environment.