2008-11-18 4 views
12

Boost ist eine großartige Reihe von Bibliotheken und es steigert Produktivität. Aber Debugging-Code, der es verwendet, ist ein totaler Albtraum. Sicher, das Durchblättern von zwanzigtausend Header-Dateien kann eine wertvolle intellektuelle Übung sein, aber was ist, wenn Sie es immer und immer wieder tun müssen?Wie Debugging-Code, der Boost ohne Verlust der Gesundheit verwendet?

Gibt es eine entwicklerfreundliche Art, den Boost-Teil einfach zu überspringen und den Debugger direkt zu meinem Code zu führen?

Visual Studio verfügt über ein DebuggerStepThroughAttribute für .NET-Framework. Gibt es etwas ähnliches für natives C++?

Antwort

10

Sie können den Boost-Namespace vollständig überspringen, indem Sie die beschriebenen Techniken verwenden here. Verwenden Sie einfach so etwas wie:

boost\:\:.*=NoStepInto

... in dem entsprechenden Registrierungseintrag.

Wenn Ihr Code jedoch innerhalb von boost aufgerufen wird (z. B. durch boost::function oder ähnlich), wird Ihr Code ebenfalls übersprungen! Ich werde interessiert sein, wenn jemand mit einer guten Lösung für , dass Problem

+0

Arr, du schlägst mich dazu ...: P –

+0

Setzen Sie einen Breakpoint in die aufgerufene Funktion? Die meisten Debugger, mit denen ich gearbeitet habe, werden das bekommen, obwohl ich niemals zuvor explizit in einen Namespace getreten habe :) – workmad3

+1

Andreas: heh, ja, das ist mir schon mal passiert. Du musst hier schnell sein! workmad3: Ja, aber wenn Sie nicht wissen, was die boost :: -Funktion zur Zeit zugewiesen ist, können Sie nicht wirklich einen Haltepunkt setzen ... – Alastair

11

kommen kann Es gibt keine Plattform/Compiler unabhängigen Weg, aber mir wurde gesagt, dass Sie den Debugger sagen können, nicht "Schritt in "bestimmte Funktionen oder Klassen. Sie sollten den Registrierungsschlüssel nachschlagen: [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\8.0\NativeDE\StepOver] und einen String-Wert erstellen, der als Zahl in der Reihenfolge benannt wird, in der die Regeln gelten sollen (ich bin ein wenig verwirrt darüber, aber ich denke, dass die Regeln einfach in der Reihenfolge angeordnet sind) wie sie angewendet werden sollen) und setzen sie auf etwas wie: "boost ::. * = NoStepInto". Zum Beispiel:

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\8.0\NativeDE\StepOver] 
"10"="boost\:\:.*=NoStepInto" 

Sie können ein wenig mehr here lesen.

Verwandte Themen