C# 调试在生产中的应用
在我的开发环境中,我的应用程序运行,然后当我将其安装到客户端计算机中时,它没有启动,我唯一想看到原因的方法是显示一个消息框,例外情况如下:C# 调试在生产中的应用,c#,winforms,remote-debugging,C#,Winforms,Remote Debugging,在我的开发环境中,我的应用程序运行,然后当我将其安装到客户端计算机中时,它没有启动,我唯一想看到原因的方法是显示一个消息框,例外情况如下: AppDomain.CurrentDomain.UnhandledException += delegate(object sender, UnhandledExceptionEventArgs args) { var exception = (Exception) args.E
AppDomain.CurrentDomain.UnhandledException
+= delegate(object sender, UnhandledExceptionEventArgs args)
{
var exception = (Exception) args.ExceptionObject;
MessageBox.Show("El programa se ha detenido debido a un error interno: " +
Environment.NewLine + exception.Message + exception);
Environment.Exit(1);
};
这将显示下一条消息
对象引用未设置为对象的实例。controli.Program.Main()
我对这个异常很熟悉,但不是在Program.cs
文件中,这怎么可能在客户机中失败呢?而不是我的
最后,我了解了远程调试,但问题是它只允许连接到已经启动的进程,并且我的应用程序在加载时抛出
您是否有任何建议或工具可供我使用解决方案1:告诉应用程序等待,直到您准备就绪
如果可以更改应用程序,可以设置一个命名事件,然后等待它。
然后,创建另一个设置该事件的应用程序。然后执行以下操作:
try-catch
块,并在该点将异常与堆栈一起记录
请注意,即使您的应用程序使用多个线程,nlog也支持分别记录每个线程。解决方案1:告诉应用程序等待,直到您准备好为止
如果可以更改应用程序,可以设置一个命名事件,然后等待它。
然后,创建另一个设置该事件的应用程序。然后执行以下操作:
try-catch
块,并在该点将异常与堆栈一起记录
请注意,即使您的应用程序使用多个线程,nlog也支持分别记录每个线程。解决方案1:告诉应用程序等待,直到您准备好为止
如果可以更改应用程序,可以设置一个命名事件,然后等待它。
然后,创建另一个设置该事件的应用程序。然后执行以下操作:
try-catch
块,并在该点将异常与堆栈一起记录
请注意,即使您的应用程序使用多个线程,nlog也支持分别记录每个线程。解决方案1:告诉应用程序等待,直到您准备好为止
如果可以更改应用程序,可以设置一个命名事件,然后等待它。
然后,创建另一个设置该事件的应用程序。然后执行以下操作:
try-catch
块,并在该点将异常与堆栈一起记录
请注意,即使您的应用程序使用多个线程,nlog也支持分别记录每个线程。在太多的情况下,应用程序在开发机器上运行正常,而在其他机器上运行失败或崩溃。首先考虑客户机的环境与您的开发环境有何不同。例如:
- 这两种环境中是否存在与安全相关的差异 是否会导致应用程序在其中一个应用程序中崩溃,而不是在另一个应用程序中崩溃李>
- 客户端机器的.NET安装和配置是否适合您的应用程序李>
- 等等
关于正确的调试方法,您应该考虑诱导应用程序在崩溃时创建一个MIDIDUMP文件(见),然后使用Valbg+SOS使用VS对应用程序进行调试(除非您使用Visual Studio 2013终极版,在这种情况下,您可能根本不需要WANDBG/SOS)。.
有太多的场景,在这些场景中,应用程序在开发机器中运行正常,而在其他机器中根本无法运行或崩溃。首先考虑客户机的环境与您的开发环境有何不同。例如:- 这两种环境中是否存在与安全相关的差异 是否会导致应用程序在其中一个应用程序中崩溃,而不是在另一个应用程序中崩溃李>
- 客户端机器的.NET安装和配置是否适合您的应用程序李>
- 等等
关于正确的调试方法,您应该考虑诱导应用程序创建MIDIDUM FI的方法。