4

http://debuggingblog.com/wp/2009/02/18/memory-access-violation-in-sql-server-compact-editionce/で説明されているように、SQL Server Compact Edition でメモリ アクセス違反をキャッチしたい 構成は次のとおりです。

<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–&gt;
       <Actions1>FullDump</Actions1>
       <ReturnAction1>gn</ReturnAction1>
     </Config>
   </Exceptions>
</ADPlus>

最新のデバッグ ツールをダウンロードし、Microsoft が adplus ツールをマネージ コードに書き換え、config ファイルの構文を変更する方法を観察します。設定ファイルを次のように書き換えます。

 <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 アプリをデバッグする構成の実例を持っているのではないでしょうか?

4

2 に答える 2

1

これにより、SOS.dll がロードされます (フレームワーク v1 を使用している場合は、<cmd>.load clr10\sos.dll</cmd>.

 <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> 
于 2010-06-07T12:20:41.150 に答える
0

ADPlus のこのドキュメントによると、例外コードはエラー コードの 16 進値である必要があります。たとえば、AV をキャプチャする場合は、0xC0000005 が必要です。

CLR のエラー ダンプのキャプチャに関するリンクは次のとおりです。

于 2010-06-07T12:20:44.350 に答える