문제

나는 이미 이것을 알고 있어야하지만 확실하지 않으며 그것이 문서화 된 것을 보지 못합니다.

개발 프로세스 중에 System.diagnostics.debug.writeline을 자주 사용하여 코드를 디버깅 할 때 변수 또는 예외에 대한 변경 사항을 추적 할 수 있습니다. 이것은 개발을 더 쉽게 개발하고 이해하기위한 것입니다. 개발 중. 나는 일반적으로 코드를 댓글을 달거나 제작에 갈 때 삭제합니다.

코드를 언급하는 것을 잊어 버리면 어떻게되는지 궁금합니다. 예를 들어, 개발주기 동안 Debug.write 라인을 사용하여 출력 창에 연결을 기록 할 수있는 오류 정보를 추적하고 있다고 가정 해 봅시다. 이것은 개발 중에 분명히 괜찮지 만, 여기에 위험이 있는지 여부가 궁금합니다. 누군가 내 라이브 실행 파일에 디버거를 부착 하고이 출력을 포획 할 수 있습니까? 아니면 Visual Studio에서만 출력을 생산하는 것입니까?

디버그에서 릴리스로 전환 할 때 어떻습니까? 릴리스를 위해 컴파일하면 컴파일러에 의해이 코드가 무시됩니까?

도움이 되었습니까?

해결책

디버그 클래스의 모든 멤버는 조건부 정보, 따라서 통화 사이트는 릴리스 빌드에 컴파일되지 않습니다.

다른 팁

System.Diagnostics.Debug 메소드 호출은 "디버그"조건부 컴파일 기호가 정의 된 경우에만 존재합니다. 기본적으로 "디버그"기호는 디버그 빌드에 대해서만 정의됩니다.

지원하는 컴파일러 ConditionalAttribute "디버그"가 조건부 편집 기호로 정의되지 않는 한 이러한 메소드에 대한 호출을 무시하십시오.

디버그 메소드에는 모두 [조건부 ( "디버그") 속성이 있으므로 디버그에서 릴리스로 전환하면 해당 메소드에 대한 호출이 제거 될 때 (다른 최적화와 함께 걱정할 필요가 없습니다) (다른 최적화와 함께 걱정할 필요가 없습니다. 릴리스 빌드).

디버그 정보는 실행할 때만 볼 수 있습니다 디버그 모드. ~ 안에 릴리스 모드 디버그 문장이 보이지 않습니다 (사용할 수 있습니다. 추적하다 대신에 디버그 이 진술이 릴리스 모드에서 보이기를 원한다면).

http://support.microsoft.com/kb/815788

없이 컴파일 제공 /d:DEBUG 옵션 또는 #define DEBUG, 귀하의 Writeline 통화는 릴리스 코드에 물리적으로 존재하지 않습니다. 문자 그대로 릴리스 버전에 있지 않기 때문에 제 3자가 이러한 통화에서 정보를 복구 할 수있는 방법은 없습니다.

자세한 내용은 여기를 참조하십시오. MSDN의 디버그 클래스 (System.Diagnostics)

디버그의 거의 모든 구성원에게는 조건부 정보가 표시됩니다. C#과 같은 컴파일러는 릴리스 빌드 중에 해당 메서드로의 통화를 건너 뛸 것이므로 안전한쪽에 있습니다.

모드 정보 :http://msdn.microsoft.com/en-us/library/system.diagnostics.debug.aspx

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top