问题标签 [debugdiag]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
904 浏览

asp.net-mvc - DebugDiag 和 MVC4 没有提供可用的堆栈跟踪

我刚刚在我们的生产服务器上遇到了一个高 CPU 问题,并决定在本地练习调试这种情况,以便为将来做好准备,但是当我尝试调试本地 MVC4 站点时,我没有得到与教程相同的信息堆栈跟踪做。

问题: 有谁知道是否可以获得更多信息的堆栈跟踪?

我希望在某处看到 HomeController.Index 但我看到的唯一方法调用是:

System.Web.Hosting.UnsafeIISMethods.MgdIndicateCompletion(IntPtr,System.Web.RequestNotificationStatus ByRef)

本地设置

我创建了一个本地MVC4 站点,使用.Net 4本地 IIS 8.0(不是 iis express)上运行来模拟服务器环境。我的本地机器运行Windows 8

调试工具:调试诊断 1.2

我点击了这个链接:http ://www.iis.net/learn/troubleshoot/performance-issues/troubleshooting-high-cpu-in-an-iis-7x-application-pool

在“图 6 - DebugDiag 分析报告”中。有一个堆栈跟踪的屏幕截图,顶行包含“FastApp._default.Page_Load(System.Object, System.EventArgs)。

教程截图: 在此处输入图像描述

我的截图: 在此处输入图像描述

我的代码模拟最大 CPU 使用率:

可能重复:

DebugDiag 未显示 .NET 4 下的 .NET 堆栈信息

0 投票
1 回答
414 浏览

heap-memory - .NET - 不同的 DebugDiag 和 perfmon GC 堆大小结果

我正在使用 DebugDiag 1.2 和 perfmon.exe 来监视 .NET 应用程序的内存使用情况。

DebugDiag 显示GC Heap Size为 35.51 MB,而对于同一时刻 perfmon 显示#Bytes in all heaps为 4.5 MB。

为什么两个值不同?它们代表的不是同一个东西吗?

0 投票
1 回答
887 浏览

waitformultipleobjects - 使用 debugdiag 获取额外的调用函数信息

我正在使用带有 .dmp 文件的 debugdiag 1.2。我一直在与 Microsoft 支持合作,我们得到了不同的函数跟踪详细信息 - 他的版本在函数名称和参数方面更加冗长。

我想知道我是否缺少与他相同的东西?

例如,我会得到:

对于相同的转储文件,他将得到:

DebugDiag 看起来是一个非常有用的工具——我非常想对它有一个很好的理解。在此先感谢您的时间。

0 投票
1 回答
1528 浏览

.net - 使用 DebugDiag 和 LeakTrack 对 Windows 应用商店应用程序中的本机内存泄漏进行故障排除

场景非常简单:

我在使用 dotMemory 分析器后识别为原生的 Windows 应用商店应用程序中存在内存泄漏。由于此工具仅限于分析托管内存,因此我通过使用 DebugDiag 执行内存转储分析进行了进一步研究。这让我更进一步,我可以发现增加的内存被提交给 mscoreei 使用的堆(任何人都有关于这个 dll 的其他信息?一个简单的谷歌搜索不会返回太多)

DebugDiag 还有一个很好的功能,称为内存泄漏分析,它将 LeakTrack.dll 注入正​​在运行的进程中以收集有关内存分配的信息,这反过来可能有助于识别托管代码的哪些部分使用了本机泄漏资源。但是,当我尝试在我的 Windows 应用商店应用程序上使用它时出现错误

无法监控进程中的泄漏...。请确保每个人都具有...\LeakTrack.dll 的读取和执行权限”。

我确实修改了该文件的权限,所以每个人都有完全访问权限,但仍然是同样的错误。

我的问题是:

如何在 Windows 应用商店应用上使用 LeakTrack?

在 Windows 应用商店应用程序中执行本机内存泄漏的最佳/替代方法是什么?

0 投票
2 回答
1273 浏览

asp.net - 应用程序池回收后如何在特定异常上获取内存转储

在我们的应用程序池回收后,我们的 WCF 服务在访问时抛出 FileLoadException。回收应用程序池有帮助。有时错误会在没有回收的情况下消失。我问了我在这里问的第一个问题:FileLoadException when access WCF service

由于我们没有其他想法如何分析这个问题,我们希望获得包含该异常的内存转储。

但我不知道如何配置 adplus 或 debugdiag 以自动附加到该新进程(回收后)并在特定异常时生成故障转储。这甚至可能吗?

0 投票
0 回答
189 浏览

c# - DebugDiag 没有看到异常

我正在支持一个应用程序团队,但他们的网页存在问题 - 如下所示:

我环顾了这里和其他网站,但找不到访问被拒绝对象的罪魁祸首。对象本身在注册表中注册为“Microsoft Office Spreadsheet 11.0”。

我决定在它发生时将其转储,以便我可以查看代码中出现问题的位置,并可能从那里追踪一些信息。

我已经尝试过调试诊断并尝试了许多异常设置,但是当我访问网站并引发异常时,System.UnauthorizedAccessException它并没有保存任何转储。

在名为 80070005 的异常列表中没有默认异常,因此我将其作为 .NET 4.0 应用程序和 80070005 记下 - 这是错误消息中显示的访问被拒绝的十六进制值。

任何想法我应该为调试诊断选择什么设置来查看异常?

0 投票
0 回答
1494 浏览

debugging - DebugDiag 1.2 小型转储已损坏?

我有两台 32 位 Windows Server 2003 R2、SP2 机器。我尝试使用 DebugDiag 1.2 来执行基于性能的 IIS 应用程序池转储。我已经在两台服务器上都试过了,他们提出了一个 WinDBG/Visual Studio/DebugDiag 无法读取的 .dmp 文件。

过去,我已经能够从命令行使用 Adplus.vbs 成功创建手动 .dmp 文件。

使用 dumpchk.exe 时,我收到以下消息:

有没有其他人遇到过这样的事情?

0 投票
1 回答
2180 浏览

c# - 如何解决 System.Web.Handlers.TransferRequestHandler 导致的 asp.net 应用程序 CPU 使用率高和崩溃?

我在服务器 4 vCPU、10GB RAM、SSD HDD 上部署了一个 ASP.NET 应用程序。查找NewRelic,我发现根本原因是:

System.Web.Handlers.TransferRequestHandler

我还使用 DebugDiag 进行了分析,结果是: 性能分析表明:

平均 CPU 排名靠前的线程是:

线程 3428 - Microsoft.Win32.Win32Native.ReadFile(Microsoft.Win32.SafeHandles.SafeFileHandle,字节*,Int32,Int32 ByRef,IntPtr)

这些线程中的所有函数(不包括样板函数)

System.Web.Hosting.UnsafeIISMethods.MgdIndicateCompletion(IntPtr,System.Web.RequestNotificationStatus ByRef)

Microsoft.Win32.Win32Native.ReadFile(Microsoft.Win32.SafeHandles.SafeFileHandle,字节*,Int32,Int32 ByRef,IntPtr)

所有操作所有操作 中的所有函数(不包括样板函数) System.Threading.Monitor.ObjWait(Boolean, Int32, System.Object) System.Threading.WaitHandle.WaitOneNative(System.Runtime.InteropServices.SafeHandle, UInt32, Boolean, Boolean) System.Threading.Thread.SleepInternal(Int32) System.Threading.WaitHandle.WaitMultiple(System.Threading.WaitHandle[], Int32, Boolean, Boolean) System.Web.Hosting.UnsafeIISMethods.MgdIndicateCompletion(IntPtr, System.Web. RequestNotificationStatus ByRef) Microsoft.Win32.Win32Native.ReadFile(Microsoft.Win32.SafeHandles.SafeFileHandle, Byte*, Int32, Int32 ByRef, IntPtr)

请帮助并推荐解决步骤。谢谢

0 投票
2 回答
233 浏览

c++ - 从调试诊断分析时 CreateErrorInfo 上的内存泄漏?

我正在分析 debugdiag 创建的内存转储。它显示了导致内存泄漏的 CreateErrorinfo 方法调用,如下所示,

我正在为 mydll 和 myanotherdll 使用正确的映射文件。CreateErrorInfo 的含义是什么?它是如何导致内存泄漏的?

函数 源 目标 mfc90u!operator new+33
mfc90u!CPlex::Create+1f mfc90u!operator new kernel32!TlsSetValueStub
kernel32!TlsSetValueStub
MYANOTHERDLLCreateErrorInfo +188e2
MYDLL!MyClas::OnTimer+a3 ......\myfile.cpp @ 4639
MYDLL!CMainFrame::OnTimer+71 ......\mainfrm.cpp @ 1246
mfc90u!CWnd::OnWndMsg+ 407
mfc90u!AfxCallWndProc+a3
user32!MDIClientWndProcW
mfc90u!__sse2_available_init+657b
mfc90u!CWnd::WindowProc+24
mfc90u!AfxCallWndProc+a3
mfc90u!AfxWndProc+37 mfc90u!AfxCallWndProc mfc90u!AfxWndProcBase+56 mfc90u!AfxWndProc mfc90u!AfxWndProcBase

0 投票
1 回答
4937 浏览

clr - clr.dll 异常导致 iis 崩溃,clr.dll 的 PDB 符号未加载,SOS 版本与您正在调试的 CLR 版本不匹配

最近,我的 asp.net 应用程序崩溃了。我在 Windows 上得到了事件日志,有两种类型的异常消息:

我也有一个迷你转储。我将它加载到windbg中。我的工作站上的 clr 版本是 4.0.30319.1022,转储的 clr 版本是 4.0.30319.1008。我从链接中了解到,我下载了正确的 clr/sos/mscordacwks.dll 版本并将它们放入 clr1008 文件夹,然后将 clr1008 文件夹复制到 windbg exe 文件夹。

之后,我开始在windbg中输入一些命令:首先,我加载1008版本的sos:.load clr1008\sos.dll

我试图加载版本 1008 的正确 clr

问题: 1) 好像我没有正确加载 sos 或 clr.dll,接下来我该怎么办?我应该将版本 1008 的 clr.dll 复制到符号路径吗?看来我已经有了正确版本的 mscordacwks.dll。

2)异常似乎是由非托管代码引起的,如何找到根本原因?

3)我也运行'.ecxr',但我很难理解输出。

更新:昨天我发布了' !analyze -v '的输出。今天我重新尝试分析转储文件,1)加载clr1008\sos.dll,2)通过exe' .cordll -u -ve -lp clr1008'加载clr.dll 3)运行!分析,输出如上列表。不匹配sos的错误消失了。

上面的消息消失了。下面的还在。

“.chain”的输出如下:

CLR 1008 的不匹配是不重要还是重要,会影响分析吗?由于不匹配,我看不到异常详细信息?或者它是一个本机代码异常,我不能从字面上看到它?

更新 2:我使用 DebugDiag 1.2 分析转储文件,我得到了报告,报告的第一行说:

更新 3:在这里打印 '.ecxr' 的输出,线程 16:

更新 4:从 DebugDiag 报告中获取堆栈输出:

线程 16 - 系统 ID 2308 该线程尚未完全解决,可能有问题,也可能没有问题。可能需要对这些线程进行进一步分析。

更新 5:

上次更新:之前,我没有显示正确的堆栈。我在互联网上搜索。然后我从这里得到它

该死的,我终于完成了。^_^

如果您正在调试小型转储,则需要确保您的可执行路径也指向 clr.dll。