我有一个项目需要在三个编译器(Borland、gnu和Microsoft)中运行。它在其中两个编译器上能够正常工作,现在我只需要让它在Microsoft的编译器上也能正常工作。但是它似乎会在其他编译器上正常工作的地方崩溃,所以我想知道是否有一种方法可以通过命令行进行调试,比如获取堆栈跟踪或获取导致崩溃的代码行,类似于gnu的gdb
。
我有一个项目需要在三个编译器(Borland、gnu和Microsoft)中运行。它在其中两个编译器上能够正常工作,现在我只需要让它在Microsoft的编译器上也能正常工作。但是它似乎会在其他编译器上正常工作的地方崩溃,所以我想知道是否有一种方法可以通过命令行进行调试,比如获取堆栈跟踪或获取导致崩溃的代码行,类似于gnu的gdb
。
Windows调试工具是一个非常出色的调试工具包,其中包括cdb
和ntsd
控制台调试器(以及GUI WinDBG调试器)。
该工具包有很棒的文档,可以轻松设置为“即时”调试器来处理崩溃,并且与崩溃转储非常容易配合使用。
这些是微软用于崩溃分析等硬核调试工具。
请注意,Windows带有ntsd
调试器的版本(至少曾经如此——在我的Win7中似乎不在工具包安装之外),但最好仍然获取该工具包,以便您拥有最新的工具——正如我所说,文档提供了大量的优秀信息。
嗯,你正在遇到一个编译器的问题,它非常努力地试图故意崩溃你的程序。这个编译器叫做“运行时错误检查”,即/RTC选项编译选项。你可以关闭它,使它像其他编译器一样运行。或者你可以追求“这里有些问题”的角度。在MSDN库的/RTC文章中有详细的文档。
Codeview是一个较旧的产品,可以做到这一点,但您完全可以使用Visual Studio来完成同样的事情。