寻找有关在用户在终端服务下运行时捕获内存转储的方法的建议。我曾尝试在 WinDbg 中使用“AdPlus”,但该应用程序在终端服务下运行,它似乎不喜欢这种组合。
这是一个 VB.NET 应用程序。
我的问题类似于用于分析 .NET 应用程序内存转储的工具,但需要允许应用程序在没有外部对话框的终端服务下运行。我在安静模式下尝试了 WinDbg,但它使会话崩溃。
寻找有关在用户在终端服务下运行时捕获内存转储的方法的建议。我曾尝试在 WinDbg 中使用“AdPlus”,但该应用程序在终端服务下运行,它似乎不喜欢这种组合。
这是一个 VB.NET 应用程序。
我的问题类似于用于分析 .NET 应用程序内存转储的工具,但需要允许应用程序在没有外部对话框的终端服务下运行。我在安静模式下尝试了 WinDbg,但它使会话崩溃。
adplus 在终端服务下应该可以正常工作——我们经常这样使用它。您究竟是如何尝试使用它的。
使用终端服务会话要注意的一件事是会话本身是否有空闲超时。我们经常通过终端服务部分将客户附加到我们的服务中,然后想知道为什么服务在一小时后就死了。对此的解决方案是强制终端服务连接使用控制台会话(mstsc 命令行上的 /console)。
由于 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