Me gustaría haber gdb
ejecutado inmediatamente el ejecutable, como si hubiera escrito "ejecutar" (motivación: no me gusta escribir "ejecutar").
Una forma es canalizar el comando de gdb
esta manera:
$ echo run | gdb myApp
Pero el problema con este enfoque es que pierde interactividad con gdb
, por ejemplo. si un punto de interrupción se activa o myApp
falla, se gdb
cierra. Este método se analiza aquí .
Mirando las opciones en --help
, no veo una manera de hacer esto, pero tal vez me estoy perdiendo algo.
./a.out a b
gdb -x
en sistemas Linux. OS X usa LLVM y clang, así que compruebe las capacidades de depuración delldb
.Usaría un guión gdb:
donde su-script contiene algo como:
luego tienes el indicador gdb interactivo normal
EDITAR :
aquí hay una optimización para los verdaderamente vagos:
.gdbinit
enworking directory
.Luego, simplemente ejecute gdb como
gdb
... y gdb carga y ejecuta automáticamente el contenido de .gdbinit.
fuente
fg
después de lar
línea, que actúa con cordurastart
comando proporciona un atajo parab
+r
: stackoverflow.com/a/2119606/895245El gato te permite seguir escribiendo después de que gdb se rompa.
fuente
Make breakpoint pending on future shared library load? (y or [n])
asumirán automáticamente la respuesta "No".start
mandoEste comando es otra buena opción:
Es como correr, pero también establece un punto de interrupción temporal
main
y se detiene allí.Este punto de interrupción temporal se desactiva una vez que se alcanza.
starti
También hay un relacionado
starti
que inicia el programa y se detiene en la primera instrucción en su lugar, vea también: Parada en la primera instrucción de código de máquina en GDBGenial cuando estás haciendo cosas de bajo nivel.
fuente
gdb -x <(echo run) --args $program $args
fuente