2009-01-18 11 views
6

Ich laufe oft in die Situation, wo ich während des Debuggens Code deaktivieren möchte, ohne den Code tatsächlich zu ändern.Kann ich in VisualStudio einen Trefferpunkt haben, der Zeilen überspringt?

Was ich am Ende mache, ist ein Break-Point (in der Regel bedingt) und dann, wenn der Break-Point feuert ich eine Setze Next Statement. Dies kann sehr arbeitsintensiv sein, wenn der Code oft erreicht wird, damit ich ein Makro erstellt:

Sub Skip3Lines() 
    DTE.ActiveDocument.Selection.LineDown(False, 3) 
    DTE.Debugger.SetNextStatement() 
End Sub 

ich meine Pause-Punkt dann verändert ein Hit-Punkt (right-click -> When Hit...) zu sein und gesagt, dass es dieses Makro auszuführen.

Visual Studio war nur allzu gerne das folgende Dialogfeld auszuspucken:

---------------------------
Error
---------------------------
A macro called a debugger action which is not allowed while responding to an event or while being run because a breakpoint was hit.
---------------------------
OK
---------------------------

Weiß jemand, wie man das schafft?

+0

Sie auch dieses mit einem Tracepoint tun können: http://stackoverflow.com/a/14695736/301729 –

Antwort

8

DTE.ExecuteCommand ("Debug.SetNextStatement")

+0

Dank, das funktioniert wie ein Charme! – Motti

0

Es geht nicht um das sich ändernde Code-Bit, aber wie wäre es mit einem lokalen Boolean? Umbrechen Sie den Code, den Sie mit einer if-Anweisung bedingt überspringen möchten. Setzen Sie es auf "True" und initialisieren Sie es jedes Mal neu. Angenommen, Sie können ein Makro schreiben, das diesen Wert in false ändert, können Sie den Hit-Point bei Bedarf aktivieren/deaktivieren.

Noch nie zuvor, also können Sie mir sagen, ob Makros nicht so funktionieren. Normalerweise benutze ich einfach edit-and-continue, um den Code, den ich überspringen möchte, zu kommentieren. Natürlich funktioniert es nicht, wenn der Code ein Lambda oder einen anonymen Typ/Methode enthält.

-1

Könnten Sie nicht Compiler condtitions in diesem Fall benutzen?

#IF Config = "Debug" Then 
    ' do my debug code here 
#Else 
    ' do my normal coding here 
#End if 
Verwandte Themen