2009-09-27 5 views
1

다음 프로그램을보십시오.나는 DebuggerNonUserCodeAttribute를 깨뜨릴 수 있었다.

Visual Studio 2008을 사용하여 시작하고 프로그램을 단계별로 실행하면 F11 (단계 안내) 디버깅 핫키 만 누르면 주석이 실행 순서를 보여줍니다. 첫 번째 열은 현재 실제로 경험 한 것입니다. 두 번째 열은 내가 예상했던 것입니다.

DebuggerNonUserCode 특성으로 표시된 클래스의 메서드는 단계적으로 실행되지만 DebuggerStepThrough 인 메서드는 실행되지 않습니다. 디버거가이 두 가지를 모두 수행 할 것으로 예상했습니다. 이것은 이전에는 발생하지 않았습니다. 클래스 라이브러리에서 새로운 기능을 디버깅 할 때 그 모든 잡음을 헤치고 싶지는 않지만이 속성으로 많은 클래스에 태그를 붙였습니다.하지만 이제는 속성이없는 것처럼 디버거가 바로 들어갑니다. .

누구나이 경험이 있으십니까? Visual Studio의 어딘가에서 옵션을 엉망으로 만든 적이 있습니까?

using System; 
using System.Diagnostics; 

namespace ConsoleApplication3 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     {         // 1    // 1 
      new C1().Test();    // 2, 5   // 2 
      new C2().Test();    // 6    // 3 
     }         // 7    // 4 
    } 

    [DebuggerNonUserCode] 
    public class C1 
    { 
     [DebuggerNonUserCode] 
     public void Test() 
     {         // 3 
     }         // 4 
    } 

    [DebuggerStepThrough] 
    public class C2 
    { 
     [DebuggerStepThrough] 
     public void Test() 
     { 
     } 
    } 
} 

답변

0

예외가있을 때 DebuggerNonUserCode 속성은 메소드 호출에서 중단되지 않습니다. 코드는 당신은 아마 "그냥 내 코드"사용할 수있는 stack.1의 다음 캐치에

DebuggerNonUserCode

+1

하지만이 속성에 대한 설명은 다음과 같습니다. "이 속성은 디버거 창 **에서 이러한 부속 유형 및 멤버의 표시를 억제하고 ** 제공된 디자이너 코드 대신 자동으로 단계별로 진행됩니다." Visual Studio는 지금 단계별로 진행되지 않고 단계별로 진행됩니다. –

3

을 깰 것입니다. 이 설정은 DebuggerNonUserCode을 무시하지만 DebuggerStepThrough은 여전히 ​​준수됩니다.

는 더 많은 정보 Tools > Options > Debugging > "Enable Just My Code"

로 이동,이 문제를 해결 주목할 가치 또한 http://msdn.microsoft.com/en-us/library/h5e30exc.aspx

DebuggerStepThrough 여전히 중단 점에서 중지하는 것입니다 참조하십시오.

관련 문제