OutputDebugString anzeigen



  • Zum Debuggen wurde mir nahegelegt OutputDebugString zu verwenden. Wenn ich diese Anweisung in meinen Code einbaue kann ich sie wie anzeigen bzw. verwenden? Bisher hab ich immer einen Haltepunkt gesetzt und das Programm mit der Taste F8 durchlaufen lassen.



  • Wenn du dein Programm im Debugmodus aus der IDE startest werden dir die Meldungen in der IDE im Ereignisprotokoll angezeigt ala Debug-Ausgabe: DEIN TEXT



  • Wenn du ohne IDE arbeitest, kannst Du mit dem Programm DebugView von Sysinternals (jetzt glaub MS) die Infos anzeigen. Einfach mal danach googlen.

    MfG Stephan



  • Für ordentliches Logging gibt es sehr gute Drittsoftware, etwa CodeSite oder SmartInspect. Eine reduzierte Version von CodeSite ist sogar im Lieferumfang von C++Builder XE enthalten.

    rudpower schrieb:

    Zum Debuggen wurde mir nahegelegt OutputDebugString zu verwenden.

    Wo ist das Problem mit dem herkömmlichen Debugging (Haltepunkte und F7/F8)?



  • Also ich verwende zB OutputDebugString bei Funktionen die mehrmals Aufgerufen werden, denn wenn eine Funktion zB 1000 mal aufgerufen wird und der Fehler kommt nicht beim 1. sondern evtl beim 600 Aufruf dann wird es langwierig mit F7/F8 den Fehler zu finden und somit kann man schon mal schneller den Fehler eingrenzen.

    Bei F7/F8 wird das Programm angehalten während mit OutputDebugString man die Werte in der Ausführung sieht.

    Also die eine Verwendung muss die andere nicht ausschließen.



  • VergissEs schrieb:

    Also ich verwende zB OutputDebugString bei Funktionen die mehrmals Aufgerufen werden, denn wenn eine Funktion zB 1000 mal aufgerufen wird und der Fehler kommt nicht beim 1. sondern evtl beim 600 Aufruf dann wird es langwierig mit F7/F8 den Fehler zu finden und somit kann man schon mal schneller den Fehler eingrenzen.

    Bei F7/F8 wird das Programm angehalten während mit OutputDebugString man die Werte in der Ausführung sieht.

    In vielen Fällen braucht man aber nicht den Code zu verändern. Man kann für Haltepunkte eine Haltebedingung angeben (etwa: erst ab dem 600. Durchlauf anhalten), und man kann sogar Debug-Ausgaben per Haltepunkt realisieren, ohne daß das Programm deswegen anhalten müßte. Steht alles sehr schön hier erklärt:
    Cary Jensen: Using Non-Breaking Breakpoints in Delphi

    VergissEs schrieb:

    Also die eine Verwendung muss die andere nicht ausschließen.

    Stimmt natürlich. Es gibt genügend Anwendungsfälle für Logging. Aber der OP klang, als hätte er gehört, OutputDebugString() sei irgendwie besser als seine Debuggingmethoden, und wolle jetzt danach handeln.


Anmelden zum Antworten