2012-03-21 12 views
13

Estoy depurando una pieza de software (incrustado). Establecí un punto de interrupción en una función y, por alguna razón, una vez que llegué a ese punto de interrupción y continue siempre regreso a la función (que es una función de inicialización que solo debe llamarse una vez). Cuando quito el punto de interrupción, y continue, el BGF me dice:Señal de programa recibida SIGTRAP, Trace/trampa de punto de corte

Program received signal SIGTRAP, Trace/breakpoint trap.

ya que estaba trabajando con puntos de interrupción, estoy suponiendo que cayó en una "trampa de punto de interrupción". ¿Qué es una trampa de punto de interrupción?

+0

Se ha agregado un título más detallado. Ayudará al otro usuario –

+0

Este es también el tipo de pregunta que puede publicar en [electrónica SE] (http://electronics.stackexchange.com). – Kortuk

+1

@Kortuk ¿De qué manera este GDB Qn está relacionado con la electrónica? : -o –

Respuesta

8

La trampa de punto de interrupción solo significa que el procesador ha alcanzado un punto de interrupción. Hay dos posibilidades de por qué esto está sucediendo. Lo más probable es que su código de inicialización sea golpeado porque su CPU se está restableciendo y está golpeando el punto de interrupción nuevamente. La otra posibilidad sería que el código donde establezca el punto de interrupción se ejecute en lugares distintos de la inicialización. A veces, con la optimización agresiva del compilador, puede ser difícil decir exactamente a qué código se asigna su punto de interrupción y qué rutas de ejecución pueden llegar allí.

+0

Si la CPU se reinicia, ¿GDB estaría todavía vivo y conectado al ejecutable del usuario? –

+1

@PavanManjunath, sí, es posible que la CPU se restablezca y luego llegue al punto de interrupción sin perturbar la sesión de GDB. – TJD

-3

Si usa V BAT como fuente de respaldo y su voltaje de respaldo maneja a menos de 1.65V, entonces tiene el mismo problema después de conectarlo a una fuente de alimentación.

En este caso, debe desconectar todas las fuentes de alimentación y volver a conectar con el nivel de tensión correcto. Entonces el problema con la depuración desaparece.

+2

Esto es completamente dependiente del microcontrolador/microprocesador utilizado. – Dean

6

La otra posibilidad que se me ocurre es:

1. Su proceso se está ejecutando más de un hilo.

Por ejemplo, 2 decir x & y.

2. hilo y da en el punto de ruptura pero hay que GDB unido a enhebrar x.

Este caso es una trampa Trace/breakpoint.

+1

Este es un síntoma común cuando se utilizan marcos de pruebas unitarias que bifurcan los casos de prueba. ¡Bueno saber! –

1

Tengo este problema al ejecutar el proyecto de Linux en Visual Studio 2015 y la depuración de forma remota. Mi solución es project_properties -> Propiedades de configuración -> Depuración -> Modo de depuración y cambie el valor de "gdbserver" a "gdb"

Cuestiones relacionadas