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