다음 프로그램을보십시오.나는 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()
{
}
}
}
하지만이 속성에 대한 설명은 다음과 같습니다. "이 속성은 디버거 창 **에서 이러한 부속 유형 및 멤버의 표시를 억제하고 ** 제공된 디자이너 코드 대신 자동으로 단계별로 진행됩니다." Visual Studio는 지금 단계별로 진행되지 않고 단계별로 진행됩니다. –