우리는 콘솔에 많은 주석을 작성하는 복잡한 콘솔 기반 도구를 빌드합니다. 이러한 도구는 많은 양의 데이터를 처리하므로 실행 비용이 많이 들고 특히 반복적으로 실행해야하는 테스트 중에는 필요 이상으로 자주 수행하지 않습니다. 이러한 테스트 중에 검사 결과를 파일에 기록하여 검사 용 해설을 캡처합니다. C :> [ourcommand]> log.txt 응용 프로그램이 완료되면 실행됩니다.응용 프로그램이 충돌하는 경우 파일에 대한 Windows 콘솔 로깅이 끝나지 않습니다. 꼬리 끝을 보는 방법?
응용 프로그램이 충돌 (잘못된 메모리 참조 등)되면 Windows가 충돌의 시점에서 발생한 내용을 볼 수 없도록 주석의 끝 부분에서 로그 파일을 급하게 끕니다. 또한 같은 장소에서 콘솔 출력을 잘라냅니다. 따라서 잘린 로그 파일을 얻었을 때 최종 결과를 보려면 로그 파일없이이 작업을 다시해야합니다. 로깅하지 않으면 Windows가 콘솔 출력을 버퍼링하지 않는 것 같습니다.
로깅하는 동안 콘솔 출력을 버퍼링하지 않도록 Windows에 알리는 방법이 있습니까? 우리 응용 프로그램은 (Windows) C 런타임 시스템을 사용하고 잠시 후에 "setvbuf" 을 다음과 같이 사용했습니다. setvbuf (stdout, NULL, _IONBF, 0); 하지만 아무 소용이 없습니다.
그건 자바다고 생각되지만, 아마도 C 등급이 될 것입니다. 어쨌든, 그것은 우리가 충돌 전에 버퍼를 플러시한다는 것을 알고 있다고 가정합니다. 나는 그런 종류의 투시력을 가진 사람을 모른다. 우리는 확실히 그것을 가지고 있지 않습니다. 매번 플러싱을하는 것은 고통스럽고 (백만 회선 프로그램 임) 효과적인 해결책은 아닙니다. –
"플러시를 퍼팅하는 것은 고통 스럽습니다."... –
Ira : 이것은 .NET 용입니다 (참조는 C#/.NET입니다). 어떤 언어를 사용하고 있습니까? C#에서는 확장 메서드를 사용하여 쉽게이 작업을 수행 할 수 있었지만 플러시가 필요하지 않습니다. 표시하도록 수정하겠습니다. –