9 Stimmen

Kann mein Visual C++-Programm auf seine eigenen Debug-Ausgaben hören?

Mein Programm verwendet eine Vielzahl von Drittanbieter-Bibliotheken, die manchmal nützliche Fehlermeldungen in die Debugger-Ausgabe einfügen (mit OutputDebugString()).

Kann mein Programm auf irgendwelche Weise programmgesteuert auf diese Ausgabe zugreifen, damit es sie analysieren und mir auf bequemere Weise melden kann?

6voto

arx Punkte 16348

Es gibt keine API, die Ihnen Zugriff auf Strings bietet, die über OutputDebugString ausgegeben werden.

Es gibt zwei Möglichkeiten, um an die Daten zu gelangen:

  • Schlechte Idee: Implementieren Sie die Client-Seite des OutputDebugString-Protokolls.
  • Bessere Idee: Hängen Sie die Funktion OutputDebugStringA.

Das OutputDebugString-Protokoll unterstützt nur einen einzigen Empfänger, daher ist der erste Ansatz nicht kompatibel mit mehreren Instanzen Ihrer Anwendung, anderen Anwendungen, die dasselbe tun, oder Debuggern. Außerdem würde es Ausgaben von allen Anwendungen erfassen. Es ist keine gute Idee. Ich erwähne es nur, weil es eine offensichtliche, aber falsche Lösung ist.

OutputDebugStringW ist (ungewöhnlicherweise) ein Wrapper um OutputDebugStringA, also ist letzteres die Funktion, die gehängt werden sollte. Es gibt viele Bibliotheken, die das Hängen erleichtern, sodass jeder Aufruf von OutputDebugString zu einem Aufruf einer von Ihnen definierten Funktion wird und Sie mit den Daten machen können, was Sie möchten.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X