visual studio simbolo que punto puede programacion pero ningun modo interrupción interrupcion establecido establecer enlazado encuentra comprobado code cargar aplicacion actualmente activará activara c++ c command-line gdb breakpoints

c++ - simbolo - punto de interrupcion visual studio 2017



GDB: ejecuta hasta un punto de corte específico (4)

A partir de la versión 7.0, GDB es compatible con las secuencias de comandos de python. Escribí un script simple que desactivará temporalmente todos los puntos de interrupción habilitados excepto el que tiene un número especificado y ejecutará el comando de ejecución de GDB.

Agregue el siguiente código al archivo .gdbinit :

python import gdb class RunUntilCommand(gdb.Command): """Run until breakpoint and temporary disable other ones""" def __init__ (self): super(RunUntilCommand, self).__init__ ("run-until", gdb.COMMAND_BREAKPOINTS) def invoke(self, bp_num, from_tty): try: bp_num = int(bp_num) except (TypeError, ValueError): print "Enter breakpoint number as argument." return all_breakpoints = gdb.breakpoints() or [] breakpoints = [b for b in all_breakpoints if b.is_valid() and b.enabled and b.number != bp_num and b.visible == gdb.BP_BREAKPOINT] for b in breakpoints: b.enabled = False gdb.execute("run") for b in breakpoints: b.enabled = True RunUntilCommand() end

En GDB, depuración del código C ++: tengo 15 puntos de interrupción estratégicamente establecidos, pero no quiero que ninguno de ellos se active hasta que llegue al punto de ruptura n. ° 2. ¿Hay algún comando run-until-breakpoint- n en GDB?

En cambio, me encuentro haciendo una de dos cosas:

  1. Elimine todos los demás puntos de interrupción para que # 2 sea todo lo que existe, ejecute, vuelva a agregar todos los puntos de interrupción; o

  2. Ejecutar y repetidamente continue allá de todos los descansos hasta que vea el primer descanso en el n. ° 2.

Quiero algo así como run-until 2 que ignorará todos los demás puntos de interrupción excepto el # 2, pero no los eliminará. ¿Existe esto? ¿Alguien más tiene una mejor manera de lidiar con esto?


Con gdb puntos de interrupción se pueden deshabilitar en lugar de eliminar. Entonces todo lo que tienes que hacer es volver a habilitarlos cuando sea necesario.


Un poco menos doloroso que borrar todos los otros puntos de interrupción sería disable . De esta forma, no tiene que volver a ingresar todas las cosas asociadas con el punto de interrupción para recuperarlo, solo enable nuevo por número.


Puede enable y disable puntos de interrupción, y estos comandos aceptarán un rango . Use estos comandos, con un rango, en puntos estratégicos durante la ejecución del programa.

Supongo que cuando mencionas el punto de ruptura n . ° 2 te refieres a la numeración gdb de los puntos de corte. Aquí hay una sesión simple de ejemplo de gdb:

(gdb) info breakpoints Num Type Disp Enb Address What 1 breakpoint keep y 0x00001ddb in main at example.c:34 2 breakpoint keep y 0x00001e00 in main at example.c:39 3 breakpoint keep y 0x00001e15 in main at example.c:40 (gdb) disable 1-3 (gdb) enable 2 (gdb) info breakpoints Num Type Disp Enb Address What 1 breakpoint keep n 0x00001ddb in main at example.c:34 2 breakpoint keep y 0x00001e00 in main at example.c:39 3 breakpoint keep n 0x00001e15 in main at example.c:40 (gdb)

Ahora solo el punto de ruptura # 2 está habilitado. Ejecute el programa y cuando la ejecución se interrumpe en el n. ° 2, vuelva a habilitar todos los puntos de interrupción deseados con un rango:

(gdb) enable 1-3 (gdb) info breakpoints Num Type Disp Enb Address What 1 breakpoint keep y 0x00001ddb in main at example.c:34 2 breakpoint keep y 0x00001e00 in main at example.c:39 3 breakpoint keep y 0x00001e15 in main at example.c:40

También puede mezclar los números de punto de corte y los rangos:

(gdb) disable 1 4 6-7 (gdb) info breakpoints Num Type Disp Enb Address What 1 breakpoint keep n 0x00001ddb in main at example.c:34 2 breakpoint keep y 0x00001e00 in main at example.c:39 3 breakpoint keep y 0x00001e15 in main at example.c:40 4 breakpoint keep n 0x00001e4f in main at example.c:43 5 breakpoint keep y 0x00001e4f in main at example.c:44 6 breakpoint keep n 0x00001e5e in main at example.c:45 7 breakpoint keep n 0x00001e5e in main at example.c:46