1

我正在使用arma矩陣,我希望在調試期間查看該值。 所以我添加了一個natvis文件如下:使用.natvis文件在visual studio 2015中自定義多維數組調試

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

然而,這並不在所有的工作。

遲早我relize問題可能是

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

於是我嘗試用任何下面的語句來代替它和它的作品

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

不過,如果我嘗試任何下面的語句,我什麼也沒得到

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

順便說一句,我已經把Natvis的診斷信息到選項中的「錯誤」,但錯誤列表中沒有任何內容。

感謝所有幫助

+0

我的理解是,這將是不是一個錯誤,它只是意味着調試器窗口中無法識別ArrayItems下的特定標籤/屬性參數,您可以在這裏查看關於如何使用「ArrayItems Expansion」的示例:https://code.msdn.microsoft.com/windowsdesktop/Writing-type-visualizers-2eae77a2 –

+0

謝謝Jack,但它只給出了一維數組的例子。此外,我讀過MSDN的解釋,他們在提交的文件中使用大小[$ i],即它們將大小存儲在1 * 2數組中,以便可以在沒有if語句的情況下調用大小。但是,我使用犰狳和矩陣大小由兩個整數而不是數組定義。 – user3003238

+0

你能分享我一個簡單的示例使用一個驅動器?我將使用與你一樣的環境在我身邊進行調試。 –

回答

0

鑄造爲int解決了這個對我來說:

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

相關問題