1

저는 arma Matrix를 사용 중이며 디버깅 중 값을보고 싶습니다. 그래서 나는 다음과 같은 natvis 파일을 추가 :Visual Studio 2015에서 .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> 

그러나, 그것은 전혀 작동하지 않습니다.

조만간 나는 문제가 그래서 다음 명령문의로 대체하려고

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

수 있습니다 relize 나는 다음 문 중 하나를 시도하는 경우는, 그러나

<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

Thanks Jack, 그러나 그것은 단지 1D 배열의 예제를 제공합니다. 게다가 나는 MSDN 설명을 읽었으며 에서 크기 [$ i]를 사용했습니다. 즉, if 문없이 호출 할 수 있도록 크기를 1 * 2 배열에 저장했습니다. 그러나, 나는 armadillo를 사용하고 있으며, 행렬 크기는 배열 대신에 두 개의 int로 정의됩니다. – user3003238

+0

하나의 드라이브를 사용하여 간단한 샘플을 나에게 공유 할 수 있습니까? 나는 당신과 같은 환경을 사용하여 내 편에서 그것을 디버깅 할 것이다. –

답변

0

에 대한

감사합니다 나를 위해이 해결 int로 :

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

관련 문제