【问题标题】:Help catching AV with WinDbg and ADPlus 7.0使用 WinDbg 和 ADPlus 7.0 帮助捕获 AV
【发布时间】:2010-06-07 12:10:36
【问题描述】:

我想在 SQL Server Compact Edition 中捕获内存访问冲突,如下所述 http://debuggingblog.com/wp/2009/02/18/memory-access-violation-in-sql-server-compact-editionce/ 建议的配置是:

<ADPlus>
   <Settings>
     <RunMode>CRASH</RunMode>
     <Option>Quiet</Option>
     <ProcessName>MyApp.exe</ProcessName>
   </Settings>
   <Exceptions>
     <Option>NoDumpOnFirstChance</Option>
     <Config>
       <Code>clr;av</Code><!–to get the full dump on clr access violation–>
       <Actions1>FullDump</Actions1>
       <ReturnAction1>gn</ReturnAction1>
     </Config>
   </Exceptions>
</ADPlus>

我下载了最新的调试工具并观察微软将 adplus 工具重写为托管代码并更改配置文件的语法。 我像这样重写配置文件:

 <ADPlus  Version="2">
 <Settings>
  <RunMode>Crash</RunMode>
  <Option>Quiet</Option>
  <Option>NoDumpOnFirst</Option>
  <Sympath>c:\symbols\</Sympath>
  <OutputDir>c:\work\output\</OutputDir>
  <ProcessName>c:\work\app\output\MyApp.exe</ProcessName>
 </Settings> 

 <Exceptions><!--to get the full dump on clr access violation-->
  <Exception Code="clr;av">   
   <Actions1>FullDump</Actions1>
   <ReturnAction1>gn</ReturnAction1>
  </Exception>  
 </Exceptions>
</ADPlus>

我收到错误“找不到代码异常:clr;av”。如果我理解正确它没有加载 sos 扩展,但我找不到我应该用来加载它的正确部分和语法。

adplus_old.vbs - 由于某些原因没有在 Windows 7 上启动进程。 WinDBG 6.12.0002.633 X86 ADPlus 引擎版本:7.01.002 02/27/2009

也许有人有一个使用最新的 adplus.exe 调试 .NET 应用程序的工作示例?

【问题讨论】:

    标签: .net sql-server-ce windbg access-violation adplus


    【解决方案1】:

    这应该会为您加载 SOS.dll(如果您使用的是框架 v1,则为 &lt;cmd&gt;.load clr10\sos.dll&lt;/cmd&gt;):

     <ADPlus  Version="2"> 
     <precommands>
        <cmd>.loadby sos mscorwks</cmd>
     </precommands>
    
     <Settings> 
      <RunMode>Crash</RunMode> 
      <Option>Quiet</Option> 
      <Option>NoDumpOnFirst</Option> 
      <Sympath>c:\symbols\</Sympath> 
      <OutputDir>c:\work\output\</OutputDir> 
      <ProcessName>c:\work\app\output\MyApp.exe</ProcessName> 
     </Settings>  
    
     <Exceptions><!--to get the full dump on clr access violation--> 
      <Exception Code="clr;av">    
       <Actions1>FullDump</Actions1> 
       <ReturnAction1>gn</ReturnAction1> 
      </Exception>   
     </Exceptions> 
    </ADPlus> 
    

    【讨论】:

    • 我试过这个变种。 ADPlus v7.0 不理解 cmd 标签。 “读取配置文件时出错:c:\work\adplus.cfg 配置字符串的 precommands 部分中的标签无效:cmd”但我找到了解决方法。我使用的是做同样工作的 DebugDiag 软件。
    【解决方案2】:

    根据this ADPlus 文档:异常代码应该是错误代码的十六进制值。例如,如果你想捕获 AV - 你需要 0xC0000005

    这是关于为 CLR 捕获错误转储的link

    【讨论】:

    • 这些链接引用了旧的 ADPlus.vbs,它在 Windows 7 上已损坏。ADPlus v7.0 更改了配置语法。我使用 DebugDiag 作为解决方法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-21
    • 1970-01-01
    • 2014-03-20
    相关资源
    最近更新 更多