2010-03-16 28 views
10

Tengo un programa Qt que muestra los datos que recibe sobre UDP. Funciona bien durante alrededor de 30 segundos, pero después de un tiempo da falla de segmentación y cuelga. Estos 30 segundos tampoco son correctos.¿Cuál es SIGSEGV, error de segmentación en Qt

que utiliza el depurador y tiene esto:

Program received signal SIGSEGV, Segmentation fault. 
0x003c6fd4 in ??() from /usr/lib/libQtGui.so.4 

Puede alguien decirme dónde puede estar el error?

+0

Si descarga y usa la versión de depuración de libQT, debería poder ver en la pila exactamente donde se bloquea. Sugerencia, instale 'qt-debug * .rpm' si está en un sistema de rpm. –

Respuesta

11

Significa que su programa ha intentado acceder a la memoria que no le pertenece. Básicamente, tiene un puntero que contiene un valor no válido en algún lugar de su código: una fuente común de este error es eliminar referencias de un puntero NULL.

+0

Podría haber un error en el código QT, por supuesto. –

+1

@wic Nunca pienses así hasta que hayas probado exhaustivamente que no hay errores en TU código. –

+1

No hubo errores en el código Qt, obviamente fue un error tonto de mi parte. – user269037

2

Necesita un depurador (y asegúrese de tener binarios con información de depuración) - verifique el seguimiento de la pila en el sitio del accidente. Casi asumiría que su propio código aparecerá en alguna parte, y este es el punto para comenzar. Compruebe las asignaciones, los tamaños de búfer ...

+0

Yah el depurador fue de gran ayuda. Havent lo usó mucho antes. – user269037

1

Asegúrese de haber asignado la matriz a la que está asignando datos.

He tenido este error constantemente por no asignar.

Ejemplo he utilizado:

char* m_tempBuff; 
*(int*) m_tempBuff = i; 

los Últimos cambiado a, y ha funcionado:

char m_tempBuff[sizeof(int)]; 
*(int*) m_tempBuff = i; 

mejor de las suertes! :)

Cuestiones relacionadas