1

더 큰 응용 프로그램 용 플러그인을 개발 중이며 다음 코드에 이상한 문제가 발생했습니다. 릴리스 모드 나 중단 점이없는 디버그에서 실행될 때 모든 것이 정상입니다. 그러나 아래 코드 조각 근처에 중단 점을 배치하면 오류가 발생합니다. 디버거가 if 블록 내부의 코드를 사전 평가하는 것처럼 보이므로이 코드에 실제로 도달하지 못하더라도 오류가 발생합니다.Visual Studio 2008 디버거 - 기능 평가 이상한

인덱서는 내부적으로 잘못된 인덱스를 확인하고 주 응용 프로그램까지 이벤트 방식을 실행합니다. 기본 앱은 대화 상자를 표시하고 자체를 닫음으로써이 오류 이벤트를 처리합니다. 주 앱을 변경할 수 없으며 인덱서를 수정할 수 없습니다 (이벤트를 실행하는 대신 예외를 throw하는 것이 효과적 일 수 있음).

int a = GetA(); // returns 0 
if (a == 1) 
{ 
    _manager[a - 1][ColumnName.Name] = "X"; //Manager has an indexer returning a DataRow. 
} 

if (a == 2) 
{ 
    _manager[a - 1][ColumnName.Name] = "Y"; 
} 

도구 -> 옵션 -> 디버깅에서 "속성 평가 및 기타 암시 적 함수 호출 사용"을 비활성화했을 때 완벽하게 작동했습니다. 이 문제를 해결하는 방법에 대해 아이디어가 있습니까? 이 오류 메시지는 원하지 않지만 디버거 평가 편의성을 잃고 싶지는 않습니다.

[편집] 설명을 다시 작성했습니다.

[업데이트] 이벤트를 상위 오류 처리 계층에 위임 한 예외가 발생하도록 인덱서 내부의 코드가 일시적으로 변경되어 도움이되었습니다.

1) 영구적으로 변경 : 옆에 세 번째 옵션이 있습니까

: 삼킨 디버거 VS 제외하고는 그렇게 모든 부작용은

그래서 질문은 (어떤 메시지 상자가 오류 처리 계층에 표시되지 않았다) 정지 이벤트에서 선택을 취소 예외

2)로 상위 계층에 팝 업되는이 클래스의 구현을 제어하는 ​​

+1

"오류"의 의미를 설명 할 수 있습니까? 대화 상자를 팝업하고 디버거를 종료합니까? – JaredPar

+0

"오류가 대화 상자입니다"는 오류 메시지가 아닙니다. 더 나은 질문을 문서화하십시오. –

답변

1

'특성 평가 및 기타 암시 적 기능을 활성화 호출'그 _manager는 (는) 인스턴스입니까? [DebuggerBrowsable (Never)] 속성을 입력 해 보았습니까? 디버거에서 해당 속성을 숨겨야합니다.

+0

유감스럽게도 도움이되지 않습니다. DebuggerStepThrough도 시도했지만 작동하지 않습니다. 어쨌든 제안에 감사드립니다. – grysik44