似乎微软生产了许多调试器和调试工具,它们创造了一个关于应用哪种工具以及何时应用的迷宫选择和问题.例如,有windbg – 以及Visual Studio中内置的调试器.两者都可以访问小型转储.为什么我会选择一个而不是另一个?
沃森博士是过去默认的死后崩溃分析工具.它现在已被“问题报告和解决方案”所取代.哪个更换为服务器上的IIS异常监视器?也许所有这些都建立在“Microsoft CDB Debugger”之上,或者这可能是另一个重复的工具?另一个ADPlus是基于CDB调试器构建的.迷宫似乎无休止地继续下去.
有人可以提供所有这些工具的分类法或路线图的链接,其中的评论被弃用(Dr.Watson?)以及调试学生应该吸收的“工具方向”?我敢肯定,我在这里没有提到过许多工具和基础库.知道它们之间的依赖关系(例如使用CDB调试器的ADPlus)会很高兴.
我发现this link很有用,因为它回答了我要问的一些问题 – 尽管材料已经过时了.任何其他资源可以提供类似简单的比较/对比度减少?
除了它们如何产生新窗口之外,CDB and NTSD之间没有区别.选择何时在命令行调试器上使用Visual Studio有时是个人选择的问题,但有时命令行是一个更好的工具.一旦熟练使用命令行调试器,就可以更快地完成任务.我怀疑有一些场景仍然只能用命令行调试器调试特定问题,但我想不出任何副作用.你错过的第三个调试器是kd,它是内核调试器.如果你想调试内核模式的东西(即你写的设备驱动程序),它真的是你唯一的选择.
CDB,NTSD和KD都是debugging tools for Windows的一部分,它本身就是DDK的一部分. Visual Studio不依赖于其他调试包,反之亦然.
Watson等不是调试器.他们只是观察和报告.我怀疑最好的建议是使用适合你的问题的任何一个.我的意思是,有很多工具可用于各种不同的MS技术.例如. Orca用于MSI数据库.所有这些产品都是无关的,经常由不同的部门发布和维护,等等.因此,我怀疑你会找到一个显示他们之间关系的图表,因为它们是如此多样化.