如何在Visual Studio中跨应用程序重新启动进行调试?

时间:2017-07-12 16:34:18

标签: vb.net visual-studio visual-studio-2010 visual-studio-debugging

我正在Visual Studio 2010中构建一个Visual Basic应用程序。我的一些选项只能在重新启动应用程序时应用。

当应用程序正常运行时,我没有遇到任何一次崩溃。当我应用设置,手动退出并重新启动时,它也不会崩溃。另一方面,一旦我尝试从应用程序自动重启,我就会在5-10次重启中获得异常。

我尝试运行调试器,但是一旦应用程序重新启动,Visual Studio调试器就会关闭,并且在应用程序再次启动时不会重新启动。也没有使用相同的配置再次启动。调试器似乎启动了应用程序配置,手动启动的应用程序配置文件也不同。

有没有办法解决这个问题?在重启时保持调试器的运行?或者我应该采取不同的策略?

1 个答案:

答案 0 :(得分:1)

方法1:从应用程序中附加调试器

如果应用程序有时在启动时崩溃,请在应用程序Debugger.Launch()中添加对Startup event的调用。这样做会导致Visual Studio打开一个窗口,您可以选择附加其调试器。

您可以查看Debugger.IsAttached property以确定是否已附加调试器。

订阅Startup事件的步骤:

  1. Solution Explorer中右键点击您的项目,然后按Properties

  2. 转到Application标签。

  3. View Application Events

  4. 在左侧组合框中选择MyApplication (events)

  5. 在右侧组合框中选择Startup

  6. 代码:

    Imports System.Diagnostics
    

    ...

    Private Sub MyApplication_Startup(ByVal sender As Object, ByVal e As Microsoft.VisualBasic.ApplicationServices.StartupEventArgs) Handles Me.Startup
        If Debugger.IsAttached = False Then
            Debugger.Launch()
        End If
    End Sub
    

    方法2:让Windows启动调试器,然后启动应用程序

    另一种解决方案是将您的应用程序添加到图像文件执行选项注册表项,这样您就可以指定一个应该为您启动应用程序的调试器。

    注意:将应用程序添加到图像文件执行选项会导致Windows自动启动指定的调试程序 而不是 您尝试打开它时的应用程序。您的应用程序的路径作为命令行参数传递,然后由调试器启动您的应用程序,并将其自身附加到它。

    Malwarebytes在其博客上提供了有关图像文件执行选项的一些信息:An introduction to Image File Execution Options

    以下是您的工作方式:

    1. 打开 Regedit

    2. 导航至HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Image File Execution Options键。

    3. 找到包含应用程序名称的密钥(如果存在),或者以yourApplicationName.exe格式创建一个新密钥。

    4. 创建新的String值(REG_SZ)并将其命名为debugger

    5. debugger的值设为vsjitdebugger.exe

    6. 继续开始调试!

    7. 有关详细信息,请参阅:How to: Launch the Debugger Automatically - MSDN