我正在Visual Studio 2010中构建一个Visual Basic应用程序。我的一些选项只能在重新启动应用程序时应用。
当应用程序正常运行时,我没有遇到任何一次崩溃。当我应用设置,手动退出并重新启动时,它也不会崩溃。另一方面,一旦我尝试从应用程序自动重启,我就会在5-10次重启中获得异常。
我尝试运行调试器,但是一旦应用程序重新启动,Visual Studio调试器就会关闭,并且在应用程序再次启动时不会重新启动。也没有使用相同的配置再次启动。调试器似乎启动了应用程序配置,手动启动的应用程序配置文件也不同。
有没有办法解决这个问题?在重启时保持调试器的运行?或者我应该采取不同的策略?
答案 0 :(得分:1)
如果应用程序有时在启动时崩溃,请在应用程序Debugger.Launch()
中添加对Startup
event的调用。这样做会导致Visual Studio打开一个窗口,您可以选择附加其调试器。
您可以查看Debugger.IsAttached
property以确定是否已附加调试器。
订阅Startup
事件的步骤:
在Solution Explorer
中右键点击您的项目,然后按Properties
。
转到Application
标签。
按View Application Events
。
在左侧组合框中选择MyApplication (events)
。
在右侧组合框中选择Startup
。
代码:
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
另一种解决方案是将您的应用程序添加到图像文件执行选项注册表项,这样您就可以指定一个应该为您启动应用程序的调试器。
注意:将应用程序添加到图像文件执行选项会导致Windows自动启动指定的调试程序 而不是 您尝试打开它时的应用程序。您的应用程序的路径作为命令行参数传递,然后由调试器启动您的应用程序,并将其自身附加到它。
Malwarebytes在其博客上提供了有关图像文件执行选项的一些信息:An introduction to Image File Execution Options。
以下是您的工作方式:
打开 Regedit 。
导航至HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Image File Execution Options
键。
找到包含应用程序名称的密钥(如果存在),或者以yourApplicationName.exe
格式创建一个新密钥。
创建新的String
值(REG_SZ
)并将其命名为debugger
。
将debugger
的值设为vsjitdebugger.exe
。
继续开始调试!