2017-01-04 2 views
0

Ich mag es wirklich, wie gdb mir ermöglicht, eine Routine für Haltepunkte mit dem Befehl command zu skripten. Oft füge ich Druckanweisungen hinzu, um eine Nachricht einfach zu drucken, und ich mag, wie das alles funktioniert, ohne die Quelldatei zu ändern.Debugger-Meldungen in Visual Studio drucken, ohne Code zu ändern

Ich musste Visual Studio verwenden und ich fand heraus, dass die Möglichkeit, Debug-Druckanweisungen einzufügen, OutputDebugString ist. Aber ich mag es nicht, wie ich meinen Quellcode modifizieren muss, um zu debuggen. Gibt es eine Möglichkeit, Debug-Meldungen in VS wie in gdb zu drucken, d. H. Ohne die Quelle zu ändern.

Wie verarbeitet der VC-Compiler den Aufruf OutputDebugString? Kompiliert es diese Zeile tatsächlich in der Assembly des Programms? Muss ich meinen Code kompilieren, wenn die einzige Änderung, die ich vorgenommen habe, darin besteht, einen Anruf zu OutputDebugString hinzuzufügen?

+0

Sie können immer Makros für Debug-Builds wie '#ifdef _DEBUG OutputDebugString() #endif' verwenden, so dass keine dieser Funktionen beim Kompilieren im Release-Modus kompiliert wird und nicht im Programm enthalten ist. Und ja, die Funktion generiert Assemblercode (generated machine). Die letzte Frage, die ich nicht vollständig verstehe, ich denke, Sie müssen Ihren Code zu kompilieren, wenn Sie Änderungen daran vornehmen ... –

+0

@ViniyoShouta Danke, das alles beantwortet. –

+0

@ViniyoShouta Ist es unangemessen, sich darüber zu ärgern? Ich frage mich, warum MS es so gemacht hat, der gdb-Weg scheint so viel besser zu sein. –

Antwort

2

Sie suchen nach Visual Studio tracepoints.

Ich habe sie nicht verwendet, aber sie scheinen well documented zu sein.

Ein Tracepoint kann eine Nachricht drucken und beinhaltet keine Änderung des Quellcodes.