【问题标题】:Is there a way to debug with the visual studio command prompt?有没有办法使用 Visual Studio 命令提示符进行调试?
【发布时间】:2011-03-29 05:24:24
【问题描述】:

我有一个项目需要使用 3 个编译器(Borland、gnu 和 Microsoft)。它适用于 2/3,现在我只需要让它与微软一起工作。它似乎在与其他编译器一起正常工作的地方崩溃了,所以我想知道是否有一种方法可以使用命令行进行调试,也许是获取堆栈跟踪或获取导致崩溃的行,类似于gdb 与 gnu。

【问题讨论】:

    标签: c++ c visual-studio visual-studio-debugging


    【解决方案1】:

    (完全披露:我在 Visual Studio 团队工作)

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

    【讨论】:

    • 我尝试使用附加进程功能,但这只显示了我的应用程序的汇编代码。
    • @Marcin - 您需要确保您的应用程序有符号,并且您还应该配置 Visual Studio 的调试器以使用 Microsoft 公共符号服务器,以便在崩溃时获得良好的堆栈跟踪发生在 Windows API 中。
    • +1 - 很久没有我无法在 Visual Studio IDE 中调试的命令行程序了。回到 Borland C++ 5 的时代,经常会出现由于内存布局不同而导致行为不同的情况。在 VC++ 中这可能仍然是可能的,但是随着更好的编码实践,导致问题的指针问题变得越来越少 - 无论如何,也有 IIRC 工具可以帮助解决这个问题。我最近在 gcc 中遇到了一个指针别名优化错误(我的错误 - gcc 正在发挥它的作用) - gdb 有效,但使用起来非常很痛苦。
    • 谢谢迈克尔,这似乎对我有帮助!我启用了公共符号服务器,我基本上可以单步执行我的代码。
    【解决方案2】:

    Debugging Tools for Windows - 一个出色的调试工具包,包括 cdbntsd 控制台调试器(除了 GUI WinDBG 调试器)。

    该软件包有很棒的文档,可以轻松设置为处理崩溃的“及时”调试器,并且与崩溃转储配合得非常好。

    这些是 Microsoft 用于崩溃分析(等等)的核心调试工具。

    请注意,Windows 带有一个版本的 ntsd 调试器(至少它曾经是 - 看起来它不在我的 Win7 盒子上,除了工具包安装之外),但无论如何获取包是个好主意,所以你拥有最新的工具 - 就像我说的那样,这些文档包含大量重要信息。

    【讨论】:

    • 正在下载这个包作为一个类型。
    【解决方案3】:
    【解决方案4】:

    好吧,您遇到了一个编译器的问题,该编译器会尝试非常故意使您的程序崩溃。它被称为“运行时错误检查”,即 /RTC 选项编译选项。您可以将其关闭以使其表现得像其他的一样。或者你可以追求“这里有问题”的角度。它在 /RTC 的 MSDN 库文章中有详细记录。

    【讨论】:

      【解决方案5】:

      Codeview 是一个较旧的产品,它可以做到这一点,但你没有理由不能使用 Visual Studio 来做同样的事情。

      【讨论】:

        猜你喜欢
        • 2012-04-14
        • 2016-05-25
        • 2017-06-06
        • 2013-11-18
        • 1970-01-01
        • 1970-01-01
        • 2018-06-18
        • 2023-01-21
        • 1970-01-01
        相关资源
        最近更新 更多