首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DebugDiag分析超时问题

DebugDiag分析超时问题
EN

Stack Overflow用户
提问于 2019-05-30 11:06:58
回答 2查看 1.3K关注 0票数 4

摘要:

  • 为了发现32位进程中的内存泄漏源,收集了一系列内存转储。
  • 使用“调试诊断”分析转储的尝试在两个小时后失败,报告超时异常。
  • 在指定超时时间为4小时的DebugDiag.Analysis.exe.config中提供“DebugDiag.Analysis.exe.config”参数确实成功地阻止了超时异常的报告。相反,在2个小时后,我看到一个完全空的报告生成。

看来,我解决超时问题的努力只取得了部分成功。我的问题是就如何使分析成功地生成分析报告征求意见。

详细信息:

根据请求,客户为32位COM+服务器应用程序提供了一系列内存转储。其思想是使用LeakTrack动态链接库来帮助跟踪在此过程中观察到的一些内存泄漏的来源。

启动调试诊断分析工具,并添加转储文件。选中“MemoryAnalysis”复选框后,将启动分析。两个小时后,分析工具将显示一个报告问题的消息框:

代码语言:javascript
复制
No report file was generated
---------------------------
An error occurred while generating the analysis report

Exception:
    Type:   TimeoutException

    Message:    This request operation sent to net.pipe://localhost/15466de6-db7d-477f-aac4-42980eb2f27f did not receive a reply within the configured timeout (02:00:00).  The time allotted to this operation may have been a portion of a longer timeout.  This may be because the service is still processing the operation or because the service was unable to send a reply message.  Please consider increasing the operation timeout (by casting the channel/proxy to IContextChannel and setting the OperationTimeout property) and ensure that the service is able to connect to the client.

    StackTrace: 

Server stack trace: 
   at System.ServiceModel.Dispatcher.DuplexChannelBinder.SyncDuplexRequest.WaitForReply(TimeSpan timeout)
   at System.ServiceModel.Dispatcher.DuplexChannelBinder.Request(Message message, TimeSpan timeout)
   at System.ServiceModel.Channels.ServiceChannel.Call(String action, Boolean oneway, ProxyOperationRuntime operation, Object[] ins, Object[] outs, TimeSpan timeout)
   at System.ServiceModel.Channels.ServiceChannelProxy.InvokeService(IMethodCallMessage methodCall, ProxyOperationRuntime operation)
   at System.ServiceModel.Channels.ServiceChannelProxy.Invoke(IMessage message)


Exception rethrown at [0]: 
   at System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg)
   at System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type)
   at DebugDiag.DotNet.x86Analysis.IAnalysisService.RunAnalysisRules(List`1 analysisRuleInfos, List`1 dumpFiles, String symbolPath, String imagePath, String reportFileFullPath, TimeSpan timeout, Boolean twoTabs, Boolean includeSourceAndLineInformationInAnalysisReports, Boolean setContextOnCrashDumps, Boolean doHangAnalysisOnCrashDumps, Boolean includeHttpHeadersInClientConns, Boolean groupIdenticalStacks, Boolean includeInstructionPointerInAnalysisReports, List`1& facts)
   at DebugDiag.DotNet.NetAnalyzer.RunX86Analysis(NetProgress progress, List`1 dumpFiles, List`1 analysisRuleInfos, String symbolPath, String imagePath, String reportFileFullPath, Boolean twoTabs, NetResults& results, List`1& facts)
   at DebugDiag.DotNet.NetAnalyzer.RunAnalysisRulesInternal(DumpFileType bitness, NetProgress progress, String symbolPath, String imagePath, String reportFileFullPath, Boolean twoTabs, AnalysisModes analysisMode)
   at DebugDiag.DotNet.NetAnalyzer.RunAnalysisRules(NetProgress progress, String symbolPath, String imagePath, String reportFileDirectoryOrFullPath, Boolean twoTabs, AnalysisModes analysisMode)
   at DebugDiag.Analysis.AnalyzerClient.RunAnalysisAsyncInternal(NetProgress progress, String symbolPath, String imagePath, List`1 dumpFiles, List`1 analysisRules, String reportFileDirectoryOrFullPath, Boolean IncludeSourceAndLineInformationInAnalysisReports, Boolean SetContextOnCrashDumps, Boolean DoHangAnalysisOnCrashDumps, Boolean IncludeHttpHeadersInClientConns, SynchronizationContext synchContext, Boolean ExcludeIdenticalStacks, Boolean IncludeInstructionPointerInAnalysisReports)

在使用DebugDiag dotPeek浏览了JetBrains分析工具程序集之后,我对DebugDiag.Analysis.exe.config做了一个更改,试图将超时设置更改为4小时:

代码语言:javascript
复制
<?xml version="1.0"?>
<configuration>
  <configSections>
    <sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
      <section name="DebugDiag.DotNet.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
    </sectionGroup>
  </configSections>
  <applicationSettings>
    <DebugDiag.DotNet.Properties.Settings>
      <setting name="AnalysisCompletedTimeout" serializeAs="String">
        <value>04:00:00</value>
      </setting>
    </DebugDiag.DotNet.Properties.Settings>
  </applicationSettings>
  <startup> 
      <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5"/>
  </startup>
  <system.net>
    <defaultProxy useDefaultCredentials="true">
    </defaultProxy>
  </system.net>
</configuration>

重新尝试分析后,该工具再次工作约2个小时。完成后,Internet将启动其报告,结果显示为完全空白。对DebugDiag reports文件夹的检查显示,.mht报表文件的大小为0字节。不过,这次没有显示“超时异常”消息框。

所以我要问的问题是:为什么没有生成报告?是否需要添加/修改其他配置设置,以便在调试diag分析主机进程或调用(UI)进程中完成报表?

为了努力了解可能发生的其他问题,我在进行分析时就将windbg附加到了DebugDiag.x86AnalysisHost.exe过程中。我的希望是,我可以看到其他例外情况的证据,这些证据可以为正在发生的事情提供线索。然而,这一过程似乎以一种有控制的方式退出,没有任何例外情况。

关于下一次欢迎去哪里的建议。

EN

回答 2

Stack Overflow用户

发布于 2019-08-08 08:15:51

我还将补充说,我收到了这个问题的超时。

遗憾的是,试图找到关于.config应该如何配置的任何信息有点问题,因为它似乎不存在。

我会更新这篇文章,如果我解决了,但我希望包括错误信息将有所帮助。

票数 1
EN

Stack Overflow用户

发布于 2022-09-29 06:03:47

它可以在\AnalysisRules\DebugDiag.AnalysisRules.dll.config中配置

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56377065

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档