2008-11-18 9 views
12

Boost es un gran conjunto de bibliotecas y realmente aumenta la productividad de. Pero el código de depuración que lo usa es una pesadilla total. Claro, recorrer veinte mil archivos de cabecera puede ser un valioso ejercicio intelectual, pero ¿qué pasa si necesitas hacerlo una y otra vez?¿Cómo depurar el código que usa boost sin perder cordura?

¿Existe una manera fácil de desarrollador de omitir la parte de refuerzo y hacer que el depurador vaya directamente a mi código?

Visual Studio tiene un DebuggerStepThroughAttribute para .NET framework. ¿Hay algo similar para C++ nativo?

Respuesta

10

Puede omitir el espacio de nombres de impulso por completo mediante el uso de las técnicas descritas here. Sólo tiene que utilizar algo como:

boost\:\:.*=NoStepInto

... en la entrada del registro correspondiente.

Sin embargo, si su código recibe una llamada de impulso (por ejemplo, a través de boost::function o similar), ¡su código también se saltará! Estaría interesado si alguien puede encontrar una buena solución para que problema ...

+0

Arr, me la ganaste ...: P –

+0

¿Poner un punto de interrupción en la función llamada? La mayoría de los depuradores con los que he trabajado obtendrán ese, aunque nunca he inhabilitado explícitamente entrar en un espacio de nombres antes :) – workmad3

+1

Andreas: heh, sí me ha pasado antes. ¡Tienes que ser rápido por aquí! workmad3: Sí, aunque si no sabe a qué función boost :: actualmente está asignado, realmente no puede establecer un punto de interrupción ... – Alastair

11

No hay plataforma/compilador de manera independiente, pero me han dicho que puede decirle al depurador que no "pise" en "ciertas funciones o clases. Debería buscar la clave de registro: [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\8.0\NativeDE\StepOver] y crear un valor de cadena denominado como un número en el orden en que deberían aplicarse las reglas (también estoy un poco confundido, pero supongo que las reglas simplemente se ordenan en el (posiblemente inverso).) forma en que deberían aplicarse) y configúrelo de la siguiente manera: "boost ::. * = NoStepInto". Ej .:

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

Puede leer un poco más here.

Cuestiones relacionadas