tag puddletag picard para musicbrainz mp3tag kid3 easytag linux gdb gdbserver

linux - picard - puddletag



¿Cómo terminar gdbserver? (7)

Aquí hay un script que estoy usando para iniciar el gdb server través de ssh y eliminarlo cuando sea necesario con ctrl + c

#!/usr/bin/env bash trap stop_gdb_server INT function stop_gdb_server { ssh remote-srv-name "pkill gdbserver" echo "GDB server killed" } ssh remote-srv-name "cd /path/to/project/dir/ && gdbserver localhost:6789 my-executable"

Estoy tratando de depurar con gdbserver. después de terminar el cliente gdb en el host, veo que gdbserver sigue escuchando:

Remote side has terminated connection. GDBserver will reopen the connection. Listening on port 5004

Intenté salir de gdbserver con todo lo que encontré en cualquier lugar sin suerte: salir, salir, q, salir del monitor, Esc, Cnt + c ... nada lo mata. Además, cuando abrí otro terminal y busqué el proceso ejecutando gdbserver (con los comandos ps, arriba) No pude encontrarlo allí ... mi pregunta es: ¿Cómo terminar gdbserver?


Dar comando

monitor exit

desde su host gdb antes de terminar el cliente. Si ya lo has terminado, simplemente adjúntalo con otro.


en linux escribe:

ps -ef |grep gdbserver

Ahora encuentra el pid del proceso gdbserver y luego

kill -9 <pid>


gdbserver debería salir cuando su destino salga. La pregunta es cómo está saliendo tu objetivo: lo hace

  1. no hacer nada: solo caerse
  2. devuelve 0 en main
  3. salida (0) en principal

Desde las sesiones de depuración que he estado ejecutando, en el primer caso, gdbserver no se cerrará. Simplemente se quedará para siempre y tienes que matarlo. En los dos últimos casos, gdbserver se cerrará.


quit [expresión]

q Para salir de GDB, use el comando quit (abreviado q), o escriba un carácter de fin de archivo (normalmente Cd). Si no proporciona la expresión, GDB terminará normalmente; de lo contrario, terminará utilizando el resultado de la expresión como el código de error.


gdbserver ejecuta en el destino, no en el host.

Terminarlo depende del objetivo. Por ejemplo, si su destino es UNIX-ish, podría iniciar sesión de forma remota y usar ps y kill desde un shell de destino.

Para cualquier tipo de destino, reiniciar debería matar gdbserver .

(Si esto no es suficiente para responder a su pregunta, incluya más información sobre el objetivo en la pregunta).


monitor exit paso a paso

https://.com/a/23647002/895245 menciona, pero esta es la configuración completa que necesita.

Remoto:

# pwd contains cross-compiled ./myexec gdbserver --multi :1234

Local:

# pwd also contains the same cross-compiled ./myexec gdb -ex ''target extended-remote 192.168.0.1:1234'' / -ex ''set remote exec-file ./myexec'' / --args ./myexec arg1 (gdb) r [Inferior 1 (process 1234) exited normally] (gdb) monitor exit

Probado en Ubuntu 14.04.