2 回答
TA贡献1856条经验 获得超11个赞
我怀疑你最好的办法是通过内存转储来诊断问题。如何获得一个,取决于你的异常处理代码是如何设置的。
如果您的应用程序本身处理异常(并且不会崩溃),则很难生成转储。您可以尝试此处概述的方法:自动生成 .NET 故障转储。或者,如果您在抛出异常时让应用程序保持活动状态(使用对话框或其他东西),您可以要求用户获取内存转储以进行进一步分析(通过任务管理器 => 右键单击进程 => 创建转储) .
如果您的应用程序真的崩溃了,可以自动创建一个转储文件,但这需要在注册表中进行配置(参见https://blogs.msdn.microsoft.com/tess/2010/08/23/getting-full-user -mode-dumps-automatically-when-your-process-crashes/ , https://www.meziantou.net/2018/06/04/tip-automatically-create-a-crash-dump-file-on-error ) .
TA贡献1830条经验 获得超3个赞
我在 App.xaml.cs 文件中做了类似下面的事情
/// <summary>
/// Interaction logic for App.xaml
/// </summary>
public partial class App : Application
{
static string filePath = System.IO.Path.Combine(Environment.GetFolderPath(
Environment.SpecialFolder.ApplicationData), "Log.txt");
private void Application_DispatcherUnhandledException(object sender, System.Windows.Threading.DispatcherUnhandledExceptionEventArgs e)
{
using (StreamWriter writer = new StreamWriter(filePath, true))
{
writer.WriteLine("Message :" + e.Exception.Message + "<br/>" + Environment.NewLine + "StackTrace :" + e.Exception.StackTrace + "" + Environment.NewLine + "Date :" + Now.ToString());
writer.WriteLine(Environment.NewLine + "-----------------------------------------------------------------------------" + Environment.NewLine);
}
MessageBox.Show("An unhandled exception just occurred: " + e.Exception.Message, "Exception", MessageBoxButton.OK, MessageBoxImage.Warning);
e.Handled = true;
}
}
希望它会帮助你
- 2 回答
- 0 关注
- 336 浏览
添加回答
举报