Windows 调试器路线图
微软似乎生产了数十种调试器和调试工具,这就造成了关于应用哪种工具以及何时应用的一系列选择和问题。例如,windbg - 以及 Visual Studio 中内置的调试器。两者都可以访问小型转储。为什么我会选择其中之一而不是另一个?
Dr. Watson 是过去默认的事后事故分析工具。它现在已被“问题报告和解决方案”取代。哪个又被服务器上的 IIS 异常监视器取代?也许所有这些都是建立在“Microsoft CDB 调试器”之上的,或者也许这是另一个重复的工具? ADPlus 是另一种,它是基于 CDB 调试器构建的。迷宫似乎永无休止。
有人可以提供所有这些工具的分类法或路线图的链接,其中的评论已被弃用(Watson 博士?)以及调试学生应该吸收哪些“工具方向”?我确信还有许多工具和基础库我没有在这里提及。最好也知道它们之间的依赖关系(例如使用 CDB 调试器的 ADPlus)。
我发现此链接很有帮助,因为它回答了一些问题我在问——尽管这些材料已经过时了。还有其他资源可以提供类似的简单比较/对比概要吗?
It seems there are dozens of debugger and debugging tools that Microsoft produces, which creates a maze of choices and questions concerning which tool to apply, and when. For example, there is windbg - and the debugger built into Visual Studio. Both can access minidumps. Why would I choose one over the other?
Dr. Watson was the default post-mortem crash analysis tool of the past. It has now been replaced with "Problem Reports & Solutions". Which is in turn replaced with IIS Exception Monitor on servers? And perhaps all of this is built on top of "Microsoft CDB Debugger," or perhaps that is a another duplicate tool? ADPlus, yet another one, is built on CDB Debugger. The maze seems to go on endlessly.
Can someone provide a link to a taxonomy or roadmap of all these tools, with comments of which are being deprecated (Dr. Watson?) and what "tool direction" debug students should absorb? I'm sure there are a number of tools and base libraries I've not mentioned here. it would be nice to know the dependencies between them too (such as ADPlus using the CDB Debugger).
I've found this link to be helpful, since it answers some of the questions I'm asking - though the material is dated. Any other resources that give a similarly simple compare / contrast run-down?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
CDB 和 NTSD 没有区别,除了它们如何生成新窗口之外。选择何时使用 Visual Studio 而不是命令行调试器有时是个人选择的问题,但有时命令行是完成这项工作的更好工具。一旦您擅长使用命令行调试器,您就可以更快地完成工作。我怀疑在某些情况下您只能使用命令行调试器调试特定问题,但我想不出任何临时解决方案。您错过的第三个调试器是 kd,它是内核调试器。如果您想调试内核模式的东西(即您编写的设备驱动程序),它确实是您唯一的选择。
CDB、NTSD 和 KD 都是Windows 调试工具的一部分,本身是 DDK 的一部分。 Visual Studio 不依赖于其他调试包,反之亦然。
Watson 等不是调试器。他们只是观察和报告。我怀疑最好的建议是使用适合您的问题的建议。我的意思是,有很多工具适用于各种不同的质谱技术。例如 Orca 用于 MSI 数据库。所有这些产品都是不相关的,通常由不同的部门发布和维护等。因此,我怀疑您是否会找到显示它们关系的图表,因为它们是如此多样化。
There is no difference between CDB and NTSD, other than how they spawn new windows. Choosing when to use Visual Studio over the command line debuggers is sometimes a matter of personal choice, but sometimes the command line is a better tool for the job. Once you get good at using the command line debuggers, you can get things done much more quickly. I suspect there are a few scenarios that remain where you can only debug a specific problem with the command line debugger, but I can't think of any off hand. The third debugger you've missed is kd, which is the kernal debugger. If you want to debug kernal mode stuff (i.e. your device drivers you've written) it's really your only choice.
CDB, NTSD and KD are all part of the debugging tools for Windows, itself part of the DDK. Visual Studio does not depend on the other debugging package and vice-versa.
Watson and the like are not debuggers. They merely observe and report. I suspect the best advice there is use whichever one is appropriate to your problem. I mean, there are lots of tools for all sorts of different MS technologies. E.g. Orca for MSI databases. All of these products are unrelated, often released and maintained by different divisions, etc. As a result, I doubt you'll find a chart showing their relationships since they are so diverse.