2016-07-14 5 views
-1

나는 형태winforms 응용 프로그램 전체에서 조사 식 창에서 변수를 모니터링하려면 어떻게합니까?

enter image description here

내가 변수 'A'클래스 레벨에서 선언이에게 있습니다.

public partial class Form1 : Form 
    { 
     int a; 
     public Form1() 
     { 
      InitializeComponent(); 
     } 
     .......... 
    } 

내가 버튼을 클릭 이벤트를 가지고, 하나 개의 버튼 단위 'A', 다른 감소율 'A'

내가 볼 '은'시계 창에서이 idealy 가능한 한 빨리해야합니다

폼은 프로그램이 종료 될 때로드되지만 어쨌든, 'a'를보기 위해 중단 점을 넣어야하는 것 같습니다. 따라서 폼로드시 중단 점을 넣고 '재생'을보고 ' 에이'.

'계속'을 클릭하면 버튼을 클릭 할 때 'a'의 값을보고 싶습니다.

그러나 중단 점에서만 수행하는 것으로 보입니다. 일단 버튼을 누르면 브레이크 포인트를 추가하지 않으면 값이 표시되지 않습니다.

enter image description here

enter image description here

은 정말이 프로그램에 어디든지 변수의 값을보고 바로 중단 점을 설정하고 싶지 않아요. 또한 GUI를 탐색하고 변수의 값을 확인하려고 할 때 코드로 이동하지 않아도됩니다.

내가 할 수있는 최선의 방법은 첫 번째 양식로드의 중괄호와 값에 영향을 줄 수있는 관련 이벤트의 중괄호에 중단 점을 넣는 것입니다. 그러나 그렇게하는 것이 필요하지 않아야하고, GUI를 클릭하여 코드로 점프하려고하면 약간의 산만 함을 느끼는 것처럼 보입니다. 좀 더 복잡한 GUI에서 마우스를 조금씩 클릭하여 내 변수와 관련하여 일관성없는 상태를 만들 수 있는지 확인하고, 클릭 할 때마다 일시 중지되는 것은 불필요하고 약간의주의를 산만하게 만듭니다.

특정 지점이 아닌 프로그램 전체에서 변수를 모니터링하고 싶습니다. 그렇게 할 수있는 옵션이 없다면 조금 놀랍습니다. 아니면 아마 볼 수는 있지만 저는 그것을 볼 수 없습니다.

a++; 
System.Diagnostics.Debug.WriteLine(a); 

그것은 최적은 아니지만 중단 점보다 낫다 :

+0

'System.Diagnostics.Debug.WriteLine'을 수동으로 호출하는 것 외에는 아무것도 알지 못합니다. –

+0

당신이 무엇을 요구하는지 명확하지 않습니다. 디버거 조사 식 창은 프로세스가 일시 중지되었을 때만 데이터를 표시합니다. 다른 사람들은 디버그 출력에 값을 쓸 수 있다고 제안했습니다. 그러나 그것이 정말로 당신이 원하는 것입니까? 프로그램과 상호 작용하고 끊임없이 변수 값을 모니터 할 수 있기를 원하면 프로그램에이를 구현해야합니다. 어딘가에서 주 창에 값을 표시하거나 프로그램 자체에 값을 표시 할 별도의 "디버그 콘솔"창을 작성하십시오. 어쨌든 이러한 기능을 선택적으로 또는 디버그 빌드에서만 만들 수 있습니다. –

+0

@PeterDuniho는 내 프로그램을 가지고있어서 텍스트 박스에 messageboxes 나 약간의 단계가있는 것처럼 보입니다. 그리고 텍스트 상자에 값을 넣거나 값을 표시하는 버튼. 저는 Visual Studio가 좀 더 고급스럽고 디버깅 기능에 그런 종류의 기능을 가지고 있다고 생각했습니다. 시계 창은 거의 존재하지 않습니다.그리고 목록의 경우, 감시 윈도우는 아무 곳이나 그냥 잘 보여줍니다. 나는 디버깅을위한 컨트롤이 필요하기 때문에 첫 번째 카운트와 모든 요소를 ​​쉽게 보여줄 수있다. – barlop

답변

0

나는 당신이 출력 창에 기록해야합니다 생각합니다.

+0

변수가 바뀌고있는 위치, 변경 될 수있는 모든 위치를 알아야 할 지 모르겠지만 조금은 힘들 것입니다. – barlop

+0

@barlop : 위의 다른 주석을 참조하십시오. . 이 시나리오에서는 표시 할 값이 무엇이든 값을 변경할 때 항상 호출되는 단일 메서드 (독립 실행 형 또는 속성 설정자)가 있는지 확인해야합니다. 그렇게하면 디버깅 결과가 코드 전체에서 변경되지 않고 한 곳으로 격리됩니다. –

+0

물론 @PeterDuniho 물론 당신은 여전히 ​​변경되는 모든 장소에서 메소드를 호출해야합니다. 그것은 당신보다 위에있는 내 코멘트에서 말하고있는 것입니다. – barlop

관련 문제