2010-01-29 5 views
2

일반적으로 Visual Studio에서 디버거가 중단 점에서 중지되지 않으면 시계를 평가할 수 없습니다. 응용 프로그램이 실행되는 동안 Visual Studio에서 시계를 평가하도록하기위한 트릭이나 추가 기능이 있습니까? 예를 들어, 코드가 실행 중일 때 코드에서 점을 전달할 때마다 시계를 평가하고 Debug.WriteLine과 같은 명령문을 삽입하도록 코드를 변경하지 마십시오.응용 프로그램이 실행되는 동안에도 VS가 디버그보기를 평가하도록 만들 수 있습니까?

이것이 가능한지 확실하지 않지만 물어볼 것이라고 생각했습니다.

답변

1

예, 가능합니다. 값을 보려는 위치에 중단 점을 설정하십시오. 중단 점을 마우스 오른쪽 단추로 클릭하고 "When Hit ..."를 선택하십시오. "메시지 인쇄"를 선택하고 {value}와 같은 표현식을 작성하십시오. 프로그램이 실행되는 동안 출력 창에 메시지가 표시됩니다.

+0

이 모드에서도 값이 인쇄 될 때 응용 프로그램이 실행되고 있지 않습니다. 응용 프로그램이 일시 중지되고 값이 평가 된 다음 응용 프로그램이 다시 계속 실행됩니다. – JaredPar

+0

Hmya, 스레드가 항상 일시 중지되었습니다. 스케줄러가 디버거 또는 디버거를 수행하는 경우 차이가 있는지 확실하지 않습니다. 아무리 쉽게 느껴지더라도 느리게 움직이는 것 말고는. –

+0

나는 "때 맞추기"가 시계를 평가할 수 있기를 바랬지 만, 그것이 가까워지면 좋겠다. – spoulson

0

컴파일러 지시문을 사용하면됩니다.

#if DEBUG 
    Debug.WriteLine 
#end if 
+0

아이디어는 코드를 변경하지 않는 것입니다. 디버깅 할 새 메소드를 찾을 때마다 새 디버그 명령문을 사용하여 다시 컴파일하고 싶지 않습니다. 또한, 나는 그 형태로 소스 컨트롤을 검사 할 수 없으므로 이러한 편집을 롤백해야 할 것입니다. – spoulson

0

아니요. Visual Studio의 평가 기능은 스택 프레임 기반 메커니즘입니다. 즉, 모든 평가는 주어진 스택 프레임 (스택 창을 통해 보았을 때)의 컨텍스트에서 수행됩니다. 프로그램이 실행 중일 때 스택 프레임 세트가 현재 변경되고 있으므로 안정적인 평가를 수행 할 수 없습니다.

또한 관리 코드에서이를 방지하는 CLR에는 다른 제한 사항이 있습니다. 예를 들어 debugee 프로세스가 매우 특정한 상태에 있지 않으면 함수를 실행할 수 없습니다.

관련 문제