【问题标题】:Capturing a memory dump - .NET捕获内存转储 - .NET
【发布时间】:2009-02-09 01:13:59
【问题描述】:

寻找有关在用户在终端服务下运行时捕获内存转储的方法的建议。我曾尝试在 WinDbg 中使用“AdPlus”,但该应用程序在终端服务下运行,它似乎不喜欢这种组合。

这是一个 VB.NET 应用程序。

我的问题类似于Tool for analyzing .NET app memory dumps,但需要允许应用程序在没有外部对话框的终端服务下运行。我在安静模式下尝试了 WinDbg,但它使会话崩溃。

【问题讨论】:

标签: .net analysis crash-dumps


【解决方案1】:

adplus 在终端服务下应该可以正常工作——我们经常以这种方式使用它。你究竟是如何使用它的。

使用终端服务会话要注意的一件事是会话本身是否有空闲超时。我们经常通过终端服务部分将客户附加到我们的服务中,然后想知道为什么服务在一小时后就死了。对此的解决方案是强制终端服务连接使用控制台会话(mstsc 命令行上的 /console)。

【讨论】:

  • 没什么特别的。在登录时启动的批处理文件中 - 'adplus -crash -quiet -dbg windbg.exe -sc XXXXXX.exe' 也许它不喜欢它的windbg。
【解决方案2】:

因为 adplus 从命令行运行,如果您注销或终端服务会话超时,脚本将停止。

可以考虑的一种可能性是使用 DebugDiag,它作为“本地系统”的服务运行,因此它不依赖于登录的交互式用户会话。

您可以将服务配置为定期安排内存转储,并稍后在 DebugDiag 的另一个组件中查看/分析结果,所有这些都可以通过脚本进行自定义。

有用的链接和下载:

http://blogs.msdn.com/sukeshak/pages/ddintro.aspx

http://blogs.msdn.com/tess/archive/2009/01/23/net-hang-analyzing-debug-diag-output.aspx

http://www.microsoft.com/downloadS/details.aspx?FamilyID=28bd5941-c458-46f1-b24d-f60151d875a3&displaylang=en

【讨论】:

    猜你喜欢
    • 2016-02-14
    • 2015-09-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-17
    • 1970-01-01
    • 2018-05-28
    • 2014-09-22
    相关资源
    最近更新 更多