我有一个项目需要使用 3 个编译器(Borland、gnu 和 Microsoft)。它适用于 2/3,现在我只需要让它与微软一起工作。它似乎在与其他编译器一起正常工作的地方崩溃了,所以我想知道是否有一种方法可以使用命令行进行调试,也许是获取堆栈跟踪或获取导致崩溃的行,类似于gdb
与gnu。
5 回答
(完全披露:我在 Visual Studio 团队工作)
如果您使用的是 Microsoft C++ 编译器,是否已经安装了 Visual Studio?如果是这样,您可以使用内置调试器。如果没有,我建议免费试用Visual C++ 2010 Express。它有一个优秀的本地调试器。您可以中断第一次机会异常(C++、SEH、Win32 异常),并直接转到发生异常的行以及调用堆栈、本地变量等。
Windows 调试工具- 一个出色的调试工具包,包括cdb
控制台ntsd
调试器(除了 GUI WinDBG 调试器)。
该软件包具有出色的文档,可以轻松设置为处理崩溃的“及时”调试器,并且与崩溃转储一起工作得非常好。
这些是 Microsoft 用于崩溃分析(以及更多)的核心调试工具。
请注意,Windows 附带了一个ntsd
调试器版本(至少它曾经 - 看起来它不在工具包安装之外的我的 Win7 盒子上),但无论如何获取包是个好主意,这样你就有了最新的工具 - 并且就像我说的那样,这些文档包含了大量的重要信息。
好吧,您遇到了一个编译器的问题,该编译器会非常努力地故意使您的程序崩溃。它被称为“运行时错误检查”,即 /RTC 选项编译选项。您可以将其关闭以使其表现得像其他人一样。或者你可以追求“这里有问题”的角度。它在 /RTC 的 MSDN 库文章中有详细记录。
Codeview 是一个较旧的产品,它可以做到这一点,但你没有理由不能使用 Visual Studio 来做同样的事情。