2010-06-25 1 views
4

OutputDebugString을 우회 할 수 있는지 궁금합니다. OutputDebugString 출력을 DebugView에 표시하고 내부 Delphi 이벤트 뷰어 창에 표시하지 마십시오. 하지만 델파이에게 OutputDebugString을 삼키지 말라고 말하는 방법을 찾을 수 없습니다. 어떤 아이디어?Delphi 7에서 OutputDebugString을 무시 하시겠습니까?

관련하여 작동하지 않는 이벤트 로그 속성에서 "출력 메시지"를 비활성화

+2

DebugView의 _and_ 델파이 창에 표시되어야합니다. 그 일이 일어 났는지 확인할 수 있습니까? –

+2

나는 델파이 7도 가지고 있는데 델파이 이벤트 로그에서만 DebugView에 나타나지 않습니다. –

+2

디버그 세션에서 실행중인 경우에만 델파이 이벤트 로그에 표시됩니다. 디버거가 연결되지 않은 채로 앱이 시작되면 OutputDebugString은 DebugView에 포착됩니다. – pantarhei

답변

0

?

+0

예. 작동하지 않습니다. – splash

+1

메시지가 내부 이벤트 로그에 표시되지 않습니다. 그러나 그들은 여전히 ​​디버거에 의해 삼켜지고 있습니다. – pantarhei

+0

일단 디버거가 프로세스에 연결되면 Windows는 해당 디버거로 출력을 보냅니다. –

1

나는이 문제를 해결할 방법이 없다고 생각합니다. 상황은 여전히 ​​델파이 2009에서 동일합니다. 기능 요청을 제출해야합니다 : http://qc.embarcadero.com

Delphi의 내부 이벤트 로그 창 대신 장점이 있어야할까요?

+0

이점은 DebugView에서 디버그 문자열을 필터링 할 수 있다는 것입니다. 인생을 훨씬 쉽게 해줍니다. – pantarhei

+0

Delphi에서 on/off 필터 이상을 정말로 필요로합니까? ;-) – splash

+0

D7에 대한 기능 요청 제출? 농담하니? 나는 그것이 D09의 순간에 가능하지 않다면 D7을 추가하지 않을 것이라고 확신한다. – pantarhei

3

그건 불가능합니다.

OutputDebugString은 문자열을 디버거 (이름에서 알 수 있듯이)에 보냅니다. 프로세스 당 하나의 활성 디버거 만있을 수 있습니다. 델파이에서 애플리케이션을 실행합니다. 델파이는 디버거 이후 메시지를 받았습니다. Delphi 외부에서 애플리케이션을 실행하면 DebugView가 디버거를 요청하지 않았으므로 DebugView에서 액세스 할 수 있습니다.

그러나 WHY이 것이 필요합니까? Delphi 이벤트 로그에서 다른 유형의 이벤트를 비활성화하면 DebugView와 동일한 기능을 사용할 수 있습니다.

+1

출력이 디버거로 전송된다는 것을 알고 있습니다. 내 질문은 그것을 우회하는 방법입니다. 그러나 그것을 우회 할 방법이없는 것처럼 보입니다. 그리고 다른 유형을 비활성화하면 같은 기능을 가지지 않습니다. 나는 아직도 수백 개의 디버그 메시지를 받고있다. DebugView에서 나는 출력을 필터링 할 수 있으며 따라서 나는 현재 내가 관심있는 것을 볼 것이다. 그것은 큰 차이를 만듭니다. – pantarhei

+1

@pantharhei : http://d-fens.net/?idMenu=3&idSub=8&idPage=1&uLinkPages=1&uToc=0 여기를보고 있으면 가능한 것이 분명합니다. 리디렉션의 소스 코드는 요청시 작성자가 사용할 수 있습니다. –

+0

@Lieven : 재미있을 것 같습니다. 시간 압박감이 사라지면 더 자세히 볼 것입니다. 그것은 사라질 것인가? ;) – pantarhei

0

Raize Software의 CodeSite을 본다면 원래 질문에서 묻지 않은 것이 있습니다. OutputDebugString을 완전히 새로운 수준으로 가져옵니다. 메시지 (수)는 CodeSite 뷰어로 보내지는데, 이는 디버그 뷰와 비슷합니다. 모든 페니 이럴 가치가 있습니다.

+0

예. 그러나 이러한 도구를 주문하거나 소개하는 것은 내 책임이 아닙니다. 나는 또한 SmartInspect를 보았다. 물론 좋을 것입니다. 그러나 지금은 아닙니다. – pantarhei

+0

반대로, Pantarhei, 동료들에게 유용한 도구를 소개하는 것은 모든 사람의 책임입니다. –

+0

확인. 잘못된 단어를 사용했습니다. 그래서 이미 도구를 도입했습니다.그러나 나는 그들이 기존의 도구에 구입되어 통합 될지 여부를 결정할 수 없습니다. – pantarhei

1

DebugView 대신 Process Monitor과 새로운 "디버그 출력"기능을 사용할 수 있습니다. OutputDebugString을 사용하지 않으며 자체의 API을 사용하며 델파이 래퍼 here도 있습니다. 프로세스 모니터 필터링 기능을 사용할 수 있으며 Delphi는 해당 메시지를 트랩하지 않지만 OutputDebugString과 같은 일반적인 기능은 아닙니다.

+0

내 로컬 테스트 용으로 사용할 수 있습니다. 하지만 나는 코드 기반으로 만들 것이라고 생각하지 않습니다. 그러나 나는 그것에 대해 살펴볼 것입니다. 감사. – pantarhei