2011-03-11 6 views
3

메소드에 지정할 수있는 속성이있어서 디버거를 사용할 때 디버거가 메소드 내부에서 단계를 수행 할 수 있다는 것을 알고 있습니까? Databind() 메서드를 재정의하고 현재 자동으로 디버거를 단계별로 실행합니다.C# 디버그 속성

+1

나는 그것을 시도하지는 않았지만 DebuggableAttribute를 시도 했습니까? http://msdn.microsoft.com/en-us/library/system.diagnostics.debuggableattribute.aspx –

+1

클래스가 [DebuggerStepThrough] 속성으로 빌드 되었습니까? – 48klocs

답변

4

디버깅하려는 메소드 안에 중단 점을 넣기 만하면됩니다.

디버깅 할 때 중단 점에 도달하지 않으면 해당 메서드가 호출되지 않는다는 것을 의미합니다. 올바르게 재정의 했습니까?

+1

메서드 나 클래스에 DebuggerStepThrough가 연결되어 있으면 깨지십니까? –

+0

@Rune FS - 물론 메서드 자체가 장식되어 있으면 중단 점에 도달하지 않습니다. 그러나이 문제를 읽는 것이 거의 불가능합니다. OP가 메소드를 오버라이드하고'DebuggerStepThrough'로 꾸며낸다면 그는 자신의 질문에 답할 것입니다. 그것이 오버라이드 된 메소드에 대해 정의 된 것처럼,'DebuggerStepThrough' 속성은'AttributeUsage'에'Inherited = false' 세트를 가지므로이 역시 배제 될 수 있습니다. – Oded

+0

은 동의하지만 여전히 클래스 사용을 중단합니다. (그러나 나는 그럴 것 같지 않다는 것에 동의한다) –

0

사용중인 VS의 버전은 무엇입니까? 한 가지 도움이 될만한 도구> 옵션에서 "노드 디버깅 : 내 코드 만 사용 (관리 전용)"- ".NET Framework 소스 스테핑 사용"선택을 취소합니다.

재정의에 중단 점이 있습니까?

1

Oded의 답변에 동의하지만 다른 옵션은 Debugger.Break()입니다. 이렇게하면 디버거가 연결되어 있으면 해당 코드 행에 도달 할 때마다 코드가 손상됩니다.

2

답장을 보내 주셔서 감사합니다. 아무도 내가 찾고있는 것을 생각해 내지 못했습니다. 나는 내가 전에 이것을 보았다는 것을 알았으므로 나는 좀 더 탐구하고 그것을 다시 발견했다. System.Diagnostics에있는 여러 디버깅 특성이 있는데, 찾고 있던 디버거 특성은 DebuggerStepThrough() 및 DebuggerHidden()입니다.

// Force the debugger to step through this code 
    [DebuggerStepThrough()] 
    public double GrandTotal 
    { 
     get 
     { 
      return (this.Subtotal + this.Tax + this.Shipping); 
     } 
    } 

그리고 ...

// Force the debugger to skip step through 
    [DebuggerHidden()] 
    public double GrandTotal 
    { 
     get 
     { 
      return (this.Subtotal + this.Tax + this.Shipping); 
     } 
    } 

편집 : 오뎃 당신이 내가 찾던 실제로 :) 나는 대답으로이 선택한 것입니다하지만 당신은 한,이 이상에 대한 코멘트를 게시 답으로 게시하지 않으시겠습니까?