2010-06-07 8 views
4

Je veux attraper la mémoire Violation d'accès dans SQL Server Compact Edition comme celui-ci décrit à http://debuggingblog.com/wp/2009/02/18/memory-access-violation-in-sql-server-compact-editionce/ Le suggéré config est:Aide attrapant AV avec WinDbg et ADPlus 7.0

<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> 

I télécharger la dernière version des outils de débogage et d'observer ce Microsoft réécrire l'outil adplus dans le code managé et modifier la syntaxe du fichier de configuration. Je récrire le fichier de configuration comme ceci:

<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> 

Et j'obtiens l'erreur « Impossible de trouver exception avec le code: clr, av ». Si je comprends bien Il n'a pas chargé l'extension sos, mais je ne trouve pas la bonne section et la syntaxe que je devrais utiliser pour le charger.

adplus_old.vbs - pour certaines raisons n'ont pas lancé processus sur Windows 7. WinDBG 6.12.0002.633 X86 ADPlus Engine Version: 7.01.002 02/27/2009

Peut-être que quelqu'un a un exemple concret de config de débogage application .NET avec la dernière adplus.exe?

Répondre

1

Cela devrait charger SOS.dll pour vous (si vous utilisez v1-cadre, l'est <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> 
+1

J'ai essayé cette variante. ADPlus v7.0 ne comprend pas la balise cmd. "Erreur lors de la lecture du fichier de configuration: c: \ work \ adplus.cfg Balise non valide dans la section de pré-commandes d'une chaîne de configuration: cmd" Mais j'ai trouvé une solution de contournement. J'utilise le logiciel DebugDiag qui fait le même travail. – Stoune

0

Selon la documentation this pour ADPlus: code d'exception doit être la valeur hexadécimale du code d'erreur. Par exemple, si vous voulez capturer AV - vous avez besoin 0XC0000005

Voici le link sur la capture des décharges pour erreur

CLR
+1

Ces liens se référaient à l'ancien ADPlus.vbs, qui est cassé sous Windows 7. ADPlus v7.0 change la syntaxe de configuration. J'utilise DebugDiag comme solution de contournement. – Stoune