当我发现它仅适用于Linux时,我正在研究Valgrind以帮助改进我的C编码/调试 - 我没有其他需要或兴趣将我的操作系统转移到Linux所以我想知道是否有一个同样好的Windows程序.
我们有一个针对.NET 4.0编写的应用程序,它在周末崩溃,将以下消息放入事件日志中:
应用程序:PnrRetrieverService.exe Framework版本:v4.0.30319
描述:由于.NET运行时在IP 791F9AAA(79140000)处出现内部错误而导致进程终止,退出代码为80131506.
这是在Windows Server 2003 R2标准版框中.谷歌搜索这个错误没有发现任何相关的.例如,这不是在VS Studio中发生的,而是在生产框中发生; 当服务最终重新启动时,它没有遇到任何进一步的问题.
如何诊断.NET运行时中的错误?
我有一个非常复杂的XAMLs WPF应用程序,我需要一种方法来知道我的应用程序挂起,当我尝试暂停执行点,应用程序似乎不能挂,指针会在这一行:
System.Windows.Application myApp;
.
.
.
.
myApp.Run(); // <== this line
Run Code Online (Sandbox Code Playgroud)
当我改变了任务栏的布局,或者当Windows资源管理器崩溃(任务栏是隐藏的),如果我在重重复做这些改动之后,应用程序将永远无法恢复,但是当小改完成后,应用程序这是发生会在几分钟后恢复,我需要知道这个问题的原因,我怀疑我的应用程序的复杂XAML,但我需要一种方法来了解页面或组件,或者这个挂起的来源.
*编辑*
我需要一种工具或方法来了解消耗调度时间的XAML是什么!
*编辑*
我有窍门的确切原因,那是因为在另一个线程创建的ReportViewer的一个实例,当我删除了实例的创建的,它的工作完美,很奇怪的,这个错误在我的应用程序很长一段时间存在以前,但最近提出了挂起,我的意思是:当我在我的应用程序的任何位置插入其中一个代码时,我的应用程序将挂起:
new Action(() =>
{
ReportViewer rv = new ReportViewer();
}).BeginInvoke(null, null);
Run Code Online (Sandbox Code Playgroud)
要么
new Action(() =>
{
ReportViewer rv = new ReportViewer();
rv.Dispose();
}).BeginInvoke(null, null);
Run Code Online (Sandbox Code Playgroud)
要么
new Action(() =>
{
ReportViewer rv = new ReportViewer();
rv.LocalReport.ReleaseSandboxAppDomain();
rv.Dispose();
}).BeginInvoke(null, null);
Run Code Online (Sandbox Code Playgroud)
我的问题:
1-更改窗口布局(调整任务栏大小或移动它)与未添加到任何可视树的报表查看器之间的关系是什么,为什么这会导致我的应用程序挂起?
2-我如何确定挂机的位置?
3-有时候应用程序会在几分钟内恢复(3-5),但有时会挂起几个小时并且应用程序无法恢复,为什么?
4-在这种情况下,如何确定导致应用程序挂起的组件或配置?
顺便说一下,如果解决这个问题,这对其他人来说非常有用,我们花了很多时间来检测它,但没有得到导致挂起的ReportViewer的确切原因!