2012-06-08 2 views
5

특정 조건이 충족되면 디버그 모드로 들어가는 방법이 있습니까?조건이 충족 될 때 디버그 모드로 들어가는 방법은 무엇입니까?

conditional breakpoint

: 나는 같은 조건부 중단 점을 설정할 수 있습니다 알고

using System; 

namespace ConditionalDebug 
{ 
    public class Program 
    { 
     public static void Main(string[] args) 
     { 
      var r = new Random(); 
      var i = r.Next(2); 
      i += r.Next(2); 
      i += r.Next(2); 
      i += r.Next(2); 
      i += r.Next(2); 
      i = 1; 
      Console.WriteLine(i); 
     } 
    } 
} 

:이 전 i == 1이 참이되는 줄에 디버그 모드를 입력 할 것이라고 가정 해 봅시다 예를 들어

물론 조건 값이 변경되어 실제 응용 프로그램에서 매우 혼란 스러울 수있는 코드의 각 줄에 조건부 중단 점을 추가해야하므로 사용할 수 없습니다.

그렇다면 디버거가 조건이 충족되는 줄에서 깨질 수 있도록 조건 i == 1을 전체적으로 설정하는 방법이 있습니까?

도움 주셔서 감사합니다.

답변

3

짧은 대답을 보는 것은 '아니오'

긴 대답은 '아니 정말,하지만 좀'입니다입니다. 원하는 행동에 가깝게하기 위해 할 수있는 일이 있습니다.

  • 조사 식 창을 사용하고 수동으로 코드를 단계별로 실행하여 변경 사항을 확인할 수 있습니다.
  • 변수에 대한 모든 참조를 찾고 변수와 위치를 변경할 수있는 모든 명령문을 분리 할 수 ​​있습니다.
  • 위의 작업을 수행 할 수 있지만 래퍼 함수를 ​​사용하거나 해당 속성을 만들어 해당 함수 또는 속성 설정자를 통해 변수의 값만 설정하면 조건부 중단 점을 설정할 수있는 단일 지점 만 있습니다. 이전 값/새 값을 비교합니다.
  • 모든 줄에 중단 점을 넣고 모든 조건을 한 번에 설정할 수 있습니다. VS 플러그인 또는 매크로를 작성하여 자동화 할 수 있습니다.
  • 그것은 나보다 낫다. 그러나 나는 당신 자신의 디버거를 작성하고 'X 변경 시마다 브레이크'를 구현하는 것과 같이 놀라 울 정도로 복잡하고 멋진 것을 할 수 있다고 확신한다.
+0

고마워, 멋진 대답 : D 나는 그 아이디어를 좋아한다. '모든 라인에 브레이크 포인트를 놓고 모든 조건을 한 번에 설정할 수있다. VS 플러그인이나 매크로를 작성하여 자동화 할 수 있습니다 .' –

1

VS의 중단 점 창에서 여러 개의 중단 점을 선택한 다음 마우스 오른쪽 단추로 한 번에 두 조건 모두에 특정 조건을 설정할 수 있습니다.

괜찮습니까?

+0

감사합니다. 유용한 정보이지만 많은 코드 줄이 포함 된 실제 프로젝트에서는 거의 불가능합니다. :) 내가 필요한 것은 전체 솔루션의 모든 줄에 조건부 중단 점이있는 것과 같습니다. –

1

만약 당신이 그것에 대해 생각한다면 당신은 디버거에게 코드의 모든 라인을 유효화하도록 요청할 것입니다. 제가보기에는 이것을 보면서 아무도 관심을 가질만한 것을 생각할 수 있는지 보게 될 것입니다 :)

+0

예, 그게 가능한지 알아 내려는 중입니다. 디버거가 솔루션의 모든 * 코드 행 뒤에 조건을 확인하기 위해서입니다. –

관련 문제