Debugging 用于在异常时启动Visual Studio的编译器/链接器选项

Debugging 用于在异常时启动Visual Studio的编译器/链接器选项,debugging,visual-studio-2013,Debugging,Visual Studio 2013,我使用Visual Studio 2013,但大多数时候我使用nmake来编译和链接控制台应用程序,这些应用程序也是从命令提示符窗口启动的 当然,如果我遇到一个bug,程序崩溃了,我不在VisualStudio中,也看不出是什么导致了这个bug VisualStudio中是否有编译器(cl.exe)和链接器(link.exe)标志允许我在调试模式下启动VisualStudio,并直接进入有问题的代码 我的替代方案是使用编译和链接程序时使用的相同标志构建一个新的VisualStudio项目,以便重

我使用Visual Studio 2013,但大多数时候我使用
nmake
来编译和链接控制台应用程序,这些应用程序也是从命令提示符窗口启动的

当然,如果我遇到一个bug,程序崩溃了,我不在VisualStudio中,也看不出是什么导致了这个bug

VisualStudio中是否有编译器(cl.exe)和链接器(link.exe)标志允许我在调试模式下启动VisualStudio,并直接进入有问题的代码

我的替代方案是使用编译和链接程序时使用的相同标志构建一个新的VisualStudio项目,以便重现问题。这非常耗时,而且大多数情况下,我不需要保存项目


我希望有一种方法可以编译我的代码并将其与适当的标志链接起来,这样所有必要的调试信息都可以在可执行文件中使用,因此当程序出现异常崩溃时,会提示我打开Visual Studio,允许我快速修复此问题。

我不明白为什么您必须在VS中重新编译和重建。在Visual Studio中,您可以动态附加到任何可执行文件

因此,当您遇到一个bug并且有崩溃窗口时,您应该能够连接到您的进程并查看调用堆栈;也许你必须指定在哪里找到来源

或者您是否锁定了DebugBreak win API


当然,假设您在Debug中编译/链接,我需要做两件事:

  • 在Visual Studio>工具>选项>调试器中。。。我必须启用即时(JIT)调试器
  • 在“控制面板>所有控制面板项目>行动中心>问题报告设置”中,我必须选择“每次出现问题时,请在检查解决方案之前询问我。”

  • 一旦这两项都完成了,我就有目的地测试了一个C程序,它的除法是零。一个窗口弹出,让我调试程序,Visual Studio自动显示出现问题的源代码。

    谢谢sandwood。我将按照您的建议尝试附加到可执行文件。有没有一种编译/链接的方式可以让VS自动知道在哪里可以找到源代码?另外,要在调试中编译/链接,我需要包括哪些特定的编译器/链接器标志?谢谢好。。。不太管用。我明确地添加了一个除法0来测试。当我在控制台窗口中运行程序时,弹出一个窗口说“program.exe已停止工作…Windows正在收集…”,然后另一个窗口问我是否要发送有关该问题的更多信息。我保持两个窗口不变,进入VisualStudio,连接到可执行文件,但没有堆栈。显然,在编译/链接时我仍然缺少一些东西。首先,您是否有与可执行文件对应的.pdb文件?我不知道/使用nmake,但我认为您可以使用它在调试中编译/构建。如果是这样,您应该看到,除了生成.exe的地方之外,.pdb文件。似乎您可以在命令行上将build选项传递给name,比如nmake.exe-f makefile.vc build=debug,它应该生成pdbMy makefile,它是手工编写的。因此,我显式地将所有需要的编译器/链接器标志放在那里。换句话说,没有目标BUILD=debug。