2011-10-11 11 views
18

Por ejemplo, tengo una función NamespaceA :: ClassB :: FunctionC() en mi programa. Sé que puedo pedirle a GDB que se divierta allí, por "romper NamespaceA :: ClassB :: FunctionC". Pero, ¿qué debo hacer si solo quiero que GDB se rompa allí, después de que esta función se llame, digamos, 100 veces?¿Cómo pedirle a GDB que se rompa en una función solo después de que se le llame en ciertas ocasiones?

Creo que una solución alternativa es agregar una variable más en el programa, y ​​luego está el comando "break ... if cond" en GDB que puedo usar. ¿Pero puedo lograr lo mismo sin agregar variables a mi programa?

Gracias.

+1

ver pregunta relacionada bajo http://stackoverflow.com/questions/2956889/how-to-set-a-counter-for-a-gdb -breakpoint – Omar

+0

Posible duplicado de [¿Cómo hacer que un punto de corte GDB solo se rompa después de que se alcanza el punto un número dado de veces?] (https://stackoverflow.com/questions/2956889/how-to-make-a-gdb-breakpoint -only-break-after-the-point-is-reached-a-given-numbe) –

Respuesta

21
(gdb) continue 100 

debe hacer el truco

(gdb) help continue 
Continue program being debugged, after signal or breakpoint. 
If proceeding from breakpoint, a number N may be used as an argument, 
which means to set the ignore count of that breakpoint to N – 1 (so that 
the breakpoint won’t break until the Nth time it is reached). 
+13

Esto supone que ya se encuentra en el punto de corte dado. También puede establecer el recuento de ignorar directamente con 'ignore ', donde 'n' es el número del punto de interrupción para ignorar los tiempos de 'conteo'. – Cascabel

+1

@Jefromi En mi opinión, su comentario merece ser otra respuesta. – Melebius

Cuestiones relacionadas