1

J'utilise arma Matrix et j'aimerais voir la valeur pendant le débogage. J'ajouter un fichier natvis comme suit:Personnalisez le débogage de tableau multidimensionnel dans Visual Studio 2015 avec le fichier .natvis

<?xml version="1.0" encoding="utf-8"?> 
<AutoVisualizer xmlns="http://schemas.microsoft.com/vstudio/debugger/natvis/2010"> 
    <Type Name="arma::Mat&lt;*&gt;"> 
    <DisplayString>{{ Size = {n_rows} x {n_cols} }}</DisplayString> 
    <Expand> 
     <Item Name="[size]">n_elem</Item> 
     <ArrayItems> 
     <Direction>Backward</Direction> 
     <Rank>2</Rank> 
     <Size> $i==0?n_rows:n_cols </Size> 
     <ValuePointer>mem</ValuePointer> 
     </ArrayItems> 
    </Expand> 
    </Type> 
</AutoVisualizer> 

Cependant, cela ne fonctionne pas du tout.

Sooner Je relize le problème peut être

<Size> $i==0?n_rows:n_rows </Size> 

J'essaie donc de le remplacer par l'un des énoncés suivants et il fonctionne

<size> $i==0?5:8 </Size>  
<size> $i==0?n_rows:8 </Size> 
<Size> $i==0?5:n_cols</Size> 

Cependant, si je tente une des affirmations suivantes , Je ne reçois plus rien

<size> $i==0?n_rows:n_cols </Size> 
<size> $i==0?n_rows:n_rows </Size> 

Par ailleurs, j'ai retourné les messages de diagnostic de Natvis à "Erreur" dans les options mais rien n'est dans la liste des erreurs.

Merci pour toute aide

+0

je crois comprendre que ce ne serait pas une erreur, cela signifie simplement que la fenêtre du débogueur ne pouvait pas reconnaître le paramètre tags/property spécifique sous ArrayItems, vous pouvez voir cet exemple sur la façon d'utiliser "ArrayItems Expansion" ici: https://code.msdn.microsoft.com/windowsdesktop/Writing-type-visualizers-2eae77a2 –

+0

Merci Jack, mais il donne seulement un exemple de tableau 1D. En outre, j'ai lu l'explication de MSDN et ils ont utilisé la taille [$ i] dans le fichier , c'est-à-dire qu'ils stockent la taille dans un tableau 1 * 2 afin qu'il puisse être appelé sans une instruction if. Cependant, j'utilise armadillo et la taille de la matrice est définie par deux ints au lieu d'un tableau. – user3003238

+0

pouvez-vous me partager un échantillon simple en utilisant un lecteur? Je vais le déboguer de mon côté en utilisant le même environnement que le vôtre. –

Répondre

0

à int résoudre pour moi:

<Size> $i==0?(int)n_rows:(int)n_cols </Size>