有没有一种方法可以在Visual Studio命令提示符下进行调试?

3

我有一个项目需要在三个编译器(Borland、gnu和Microsoft)中运行。它在其中两个编译器上能够正常工作,现在我只需要让它在Microsoft的编译器上也能正常工作。但是它似乎会在其他编译器上正常工作的地方崩溃,所以我想知道是否有一种方法可以通过命令行进行调试,比如获取堆栈跟踪或获取导致崩溃的代码行,类似于gnu的gdb

5个回答

5
(完全透明:我在Visual Studio团队工作)
如果您正在使用Microsoft C++编译器,是否已经安装了Visual Studio?如果是这样,您可以使用内置调试器。如果没有,我建议尝试免费的Visual C++ 2010 Express。它有一个出色的本地调试器。您可以在第一次机会异常(C++,SEH,Win32异常)上中断,并直接转到发生异常的行,以及调用堆栈、本地变量等。

我尝试使用“附加进程”功能,但它只显示了我的应用程序看起来像汇编代码的行。 - Marcin
1
@Marcin - 你需要确保你的应用程序有符号,并且你还应该配置Visual Studio的调试器,以使用Microsoft公共符号服务器,这样如果崩溃发生在Windows API中,你就可以获得良好的堆栈跟踪。 - Michael Burr
+1 - 自从我使用Visual Studio IDE以来,已经很长时间没有遇到过无法调试的命令行程序了。回到Borland C++ 5的时代,由于不同的内存布局,经常会出现不同的行为。在VC++中可能仍然存在这种情况,但是由于更好的编码实践,导致引起此问题的指针问题变得越来越少 - 在任何情况下,还有工具可以帮助解决这个问题。最近,在gcc中遇到了一个指针别名优化错误(我的错误 - gcc做了它应该做的事情)- gdb可以工作,但使用起来非常痛苦。 - user180247
谢谢Michael,这似乎帮了我很多!我启用了公共符号服务器,现在基本上可以逐步执行我的代码了。 - Marcin

2

Windows调试工具是一个非常出色的调试工具包,其中包括cdbntsd控制台调试器(以及GUI WinDBG调试器)。

该工具包有很棒的文档,可以轻松设置为“即时”调试器来处理崩溃,并且与崩溃转储非常容易配合使用。

这些是微软用于崩溃分析等硬核调试工具。

请注意,Windows带有ntsd调试器的版本(至少曾经如此——在我的Win7中似乎不在工具包安装之外),但最好仍然获取该工具包,以便您拥有最新的工具——正如我所说,文档提供了大量的优秀信息。


将此软件包下载为一种类型。 - Marcin

1

1

嗯,你正在遇到一个编译器的问题,它非常努力地试图故意崩溃你的程序。这个编译器叫做“运行时错误检查”,即/RTC选项编译选项。你可以关闭它,使它像其他编译器一样运行。或者你可以追求“这里有些问题”的角度。在MSDN库的/RTC文章中有详细的文档。


0

Codeview是一个较旧的产品,可以做到这一点,但您完全可以使用Visual Studio来完成同样的事情。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接