2009-01-18 9 views
6

Często napotykam na sytuację, w której chcę wyłączyć kod podczas debugowania bez faktycznej zmiany kodu.Czy mogę mieć punkt dostępu w VisualStudio, który pomija wiersze?

Co mam zrobić, to mieć punkt przerwania (zwykle warunkowe), a następnie po uruchomieniu punktu krytycznego wykonuję Zestaw Next Statement. To może być bardzo pracochłonne, gdy kod zostanie osiągnięta wiele razy, więc stworzyłem makro:

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

Potem zmieniłem break-punkt będzie hitem-punkt (right-click -> When Hit...) i powiedział jej, aby wykonać to makro.

Visual Studio był zbyt szczęśliwy wypluć okno dialogowe:

---------------------------
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
---------------------------

Czy ktoś wie, jak sobie z tym poradzić?

+0

Można również zrobić to za pomocą tracepoint: http://stackoverflow.com/a/14695736/301729 –

Odpowiedz

8

DTE.ExecuteCommand ("Debug.SetNextStatement")

+0

Thanks, który działa jak czar! – Motti

0

Nie zmienia kodu bitowego, ale co z lokalną wartością boolowską? Zawiń kod, który chcesz warunkowo pominąć za pomocą instrukcji if. Ustaw go jako prawdziwy i ponownie go zainicjuj za każdym razem. Następnie, zakładając, że możesz napisać makro, które zmienia tę wartość na false, możesz włączyć/wyłączyć hit-point na żądanie.

Nigdy wcześniej tego nie robiłem, więc możesz mi powiedzieć, czy makra nie działają w ten sposób. Zwykle po prostu używam edycji i kontynuowania, komentując kod, który chcę pominąć. Oczywiście to nie działa, jeśli kod ma lambdę lub anonimowy typ/metodę w nim.

-1

Nie można użyć condtitions kompilatora w tym przypadku?

#IF Config = "Debug" Then 
    ' do my debug code here 
#Else 
    ' do my normal coding here 
#End if 
Powiązane problemy