2008-11-18 12 views
12

Zwiększenie to świetny zestaw bibliotek, a to naprawdę zwiększa produktywność. Ale debugowanie kodu, który go używa, jest totalnym koszmarem. Oczywiście, przejście przez dwadzieścia tysięcy plików nagłówkowych może być cennym ćwiczeniem intelektualnym, ale co, jeśli musisz robić to w kółko?Jak debugować kod, który używa wzmocnienia bez utraty zdrowia?

Czy jest przyjazny dla deweloperów sposób po prostu pomijanie części doładowania i po debugerze przejść bezpośrednio do mojego kodu?

Visual Studio ma architekturę DebuggerStepThroughAttribute dla platformy .NET. Czy jest coś podobnego dla natywnego C++?

Odpowiedz

10

Możesz całkowicie pominąć przestrzeń nazw doładowania, używając technik opisanych pod here. Wystarczy użyć coś takiego:

boost\:\:.*=NoStepInto

... w odpowiedniej pozycji rejestru.

Jeśli jednak Twój kod zostanie wywołany z poziomu doładowania (np. Poprzez boost::function lub podobny), Twój kod również zostanie pominięty! Będę zainteresowany, jeśli ktoś może wymyślić dobre rozwiązanie dla , że problem ...

+0

Arr, pokonałeś mnie ...: P –

+0

Ustaw punkt przerwania w wywołanej funkcji? Większość debuggerów, z którymi pracowałem, dostanie tę, chociaż nigdy wcześniej nie wyłączyłem wkraczania w przestrzeń nazw :) – workmad3

+1

Andreas: heh, tak, to mi się przydarzyło wcześniej. Musisz być szybki tutaj! workmad3: Tak, chociaż jeśli nie wiesz do czego jest przypisana funkcja boost ::, naprawdę nie możesz ustawić punktu przerwania ... – Alastair

11

Nie ma niezależnej platformy/kompilatora, ale powiedziano mi, że możesz powiedzieć debuggerowi, aby nie "krokował". w "określone funkcje lub klasy. Powinieneś przejrzeć klucz rejestru: [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\8.0\NativeDE\StepOver] i utworzyć wartość ciągu nazwaną jako liczba w kolejności, w której powinny obowiązywać reguły (jestem trochę zdezorientowany, ale przypuszczam, że reguły są po prostu uporządkowane w) sposób, w jaki powinny być stosowane) i ustawić go na coś w stylu: "boost ::. * = NoStepInto". Np .:

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

Możesz przeczytać nieco więcej here.

Powiązane problemy