2008-11-20 14 views
5

Oto scenariusz. Debuguję własną aplikację (C/C++), która wykorzystuje bibliotekę opracowaną przez inny zespół w firmie. Asercja kończy się niepowodzeniem, gdy mój kod generuje przypadek krawędzi. To jest ból, ponieważ twierdzenie nie jest sformułowane poprawnie, więc funkcja biblioteki działa poprawnie, ale dostaję wszystkie te przerwy, w których muszę po prostu kontynuować (dużo, jak w pętli), więc mogę dostać się do rzeczy, którymi jestem naprawdę zainteresowany Podczas debugowania muszę korzystać z wersji debugowania biblioteki z innych powodów. Drugi zespół nie naprawi tego aż do następnego wydania (hej, działa na naszej maszynie).Czy mogę ustawić Visual Studio 2005 tak, aby ignorował asercje w określonym regionie kodu podczas debugowania

Czy mogę nakazać debuggerowi zignorowanie punktów przerwania potwierdzonych przez tę sekcję kodu (tzn. Czy może automatycznie kontynuować dla mnie).

Odpowiedz

3

Jeśli kod jest wyzwalanie punkty przerwania we własnym zakresie (według __debugbreak lub int 3), nie można korzystać z punktów przerwań warunkowych, jak wartości graniczne nie są znane do Visual Studio w ogóle. Jednak możesz być w stanie wyłączyć wszelkie takie punkty przerwania, które Cię nie interesują, modyfikując kod z debuggera. Prawdopodobnie nie to, czego chcesz, ponieważ musisz powtarzać to w każdej sesji debugowania, ale wciąż może być lepsze niż nic. Aby uzyskać więcej informacji, przeczytaj How to disable a programmatical breakpoint/assert?.

+0

Tak, to generuje INT 3, zobaczę, czy mogę w tym momencie wskoczyć w NOP, aby przestać mi przeszkadzać ... –

2

Nie ma dobrego sposobu automatycznego ignorowania błędów ASSERT() w bibliotece debugowania. Jeśli to jest ten, którego musisz użyć, będziesz musiał przekonać drugi zespół, że to teraz trzeba naprawić, lub jeśli masz źródło tej biblioteki, możesz samodzielnie naprawić lub usunąć twierdzenia tylko po to, aby uzyskać pracę zrobione w międzyczasie.

Powiązane problemy