2010-01-21 15 views
18

Cuando pulso una declaración afirmativa normal mientras se depura con Visual Studio obtengo la opción de entrar en el depurador para poder ver toda la pila y las variables locales, no solo el mensaje afirmativo.Asignación de depuración en Qt Creator

¿Es posible hacer esto con Qt Creator + mingw32 y Q_ASSERT/Q_ASSERT_X?

Respuesta

7

Puede instalar un controlador para los mensajes/avisos que emite Qt, y hacer su propio tratamiento de los mismos. Consulte la documentación para qInstallMsgHandler y el ejemplo que brindan allí. Debería ser fácil insertar un corte en un manejador de mensajes personalizado (o de hecho, solo afirmar por su cuenta en ese punto). El único pequeño inconveniente es que estarás un poco más abajo en la pila que donde realmente ocurrió el error, pero es una simple cuestión subir la pila hasta que estés en el marco apropiado.

+3

he usado el ejemplo con __asm ​​("int3") antes del aborto () llame y funciona de maravilla. –

2

Es posible. He codificado una función BreakInDebugger a mano y una macro assert que llama a la función.

por ejemplo: #define MyAssert(X) (BreakInDebugger();Q_ASSERT(X))

16

Es posible. De alguna manera la característica dejó de funcionar para mí, pero básicamente lo que quieres es parar en qFatal(). Para asegurar que esto suceda, en Qt Creator vaya a Herramientas -> Opciones -> Depurador -> BGF y seleccione "parada cuando un qFatal se emite"

+0

Parece la opción correcta (¿por qué no está activado de forma predeterminada?), Pero tampoco parece funcionar para mí. –

+1

El panel de configuración se llama "GDB extendido" en Qt Creator 5.3 y posiblemente más adelante. –

+0

Funcionó para mí: Qt Creator 5.3 (32) + Qt Libraries 5.9 (64) + MSYS2/MinGW (64). –