2014-09-14 2 views
1

저는 프로그래밍 초보자이며 버그를 추적하는 데 매우 어려움을 겪고 있습니다. 이는 일반적으로 변수를 감시 화면에 배치하고 일부 변경 사항을 알기 전까지 f5 키를 계속 누르고 있기 때문에 발생합니다. 저는 Visual C# 2010을 사용하고 있으며 18000 줄의 코드를 가지고 있으므로 문제가 생길 수있는 행운이 있습니다.변수가 변경 될 때 디버깅을 통한 버그 추적

변수가 변경되면 즉시 코드 줄로 갈 수있는 방법이 있습니까?

답변

4

변수를 property으로 변경하고 설정 자에 중단 점을 넣을 수 있습니다. 그런 다음 코드 조각이 값을 변경할 때마다 적중되는 단일 중단 점을 가질 수 있습니다.

당신이 그렇다면 :

int myVariable { 
    get; 
    set; // <-- Put your breakpoint here 
} 
+0

저에게 꽤 복잡한 질문입니다. 답을 좀 더 쉽게 찾을 수 있습니까? – ng80092a

+1

@ ng80092a 재산에 대해 무엇이 너무 복잡한 지 잘 모르겠습니다. 내 답변에 예제를 추가했습니다. – shf301

1

조건이 충족되면 조건부 중단 점이 발생할 수 있습니다.

그래서, 당신은 인덱스 변수 indx이 가정 만 중지 말을하는 conditinal 브레이크 포인트를 넣을 수 있습니다 때 값을 다음 = 7, 당신은 조건 변경을있을 때 거기 중단됩니다 ...

이 모양을 보시오 msdn page
youtube 안내서에서.

+0

그러나이 방법을 사용하려면 everyline – ng80092a

+0

에 중단 점을 삽입해야합니다. 다른 대답과 마찬가지로, 문제가 좀 더 심해지고 디자인이 현명합니다. – Noctis

1

네이티브 코드에서 가장 좋은 방법은 데이터 중단 점을 설정하는 것입니다. 변경 사항의 출처와 관계없이 데이터가 변경되면 데이터 중단 점이 실행됩니다.

그러나 .NET에서는이 작업을 수행 할 수 없습니다. 변수 값이 변경되면 중단되도록 디버거에 요청할 수 없습니다. 그러나 모든 희망이 사라지는 것은 아닙니다. 해당 변수를 사용하는 코드의 모든 위치를 찾으려면 해당 변수에서 "Find Usages"또는 "References Find"를 수행하십시오. 그런 다음 각 위치에 중단 점을 설정하여 변수 값이 변경되는시기를 확인하십시오.

4

이 디자인 문제 같은 소리 님의

int myVariable; 

변경을. 이상적으로는 변수가 코드의 특정 위치로 변경되는 위치를 제한해야합니다. 이것은 전역 변수와 정적 변수를 사용하지 않는 한 전역 변수와 정적 변수를 피할 수있는 한 가지 이유입니다. 그렇더라도 액세서 메소드를 직접 변경하지 않고 이러한 변수의 인터페이스로 정의해야합니다.

코드를 디버깅 할 때 향후 디버깅이 그렇게 어렵지 않도록 코드를 향상시킬 수있는 방법을 찾아 보시기 바랍니다.

+0

그래, 나는 스팸 코드 어려운 방법을 배우고있어 : (나는 지금까지 모든 문제를 해결했습니다 :) – ng80092a

+0

어떤 디자인 값을 사용해야합니까? 나는 그것을 구글에서 찾았지만 특별한 것은 없다. – ng80092a

+0

@ ng80092a 객체 지향 디자인은 단일 블로그 나 Q & A에서 쉽게 다룰 수없는 거대한 주제이다. 많은 인쇄 도서를 포함하여이 주제에 대한 많은 정보가 분명히 있습니다. –

관련 문제