Comandos de supervivencia GDB debugging


Todo programador de C que se precie tarde o temprano tendrá que debugear su código ya sea mediante prints o con un debuger en condiciones, en este artículo listaré los comandos de supervivencia utilizados en GDB.

 

La lista es muy escueta y simple ya que se trata de una lista de comandos básicos:

  • si: Step ASM
  • s: Step C entrando en las funciones
  • n: Step C sin entrar en funciones
  • print VAR_NAME: Muestra el valor de una variable
    • Podemos indicar el formato: p/d imprimirá el valor en decimal, por defecto lo hace en hexadecimal, podemos ver los formatos soportados en este enlace.
  • list: Muestra el código fuente en C
  • b N_LINE/FUNCTION_NAME: Setea un breakpoint
  • info breakpoints: Lista los breakpoints
  • info functions: Lista de funciones
  • watch VAR_NAME: Dispara un breakpoint cuando el valor de la variable cambia
  • info watchpoints: Lista los watchpoints
  • del N_BREAK: Elimina el breakpoint indicado
  • x/Nx MEM_ADDRESS: Muestra el contenido en memoria de la dirección
  • print &VAR_NAME: Dirección de memoria de una variable
  • info variables: Muestra las variables estáticas o globales
  • info locals: Muestra el valor de todas las variables existentes en la pila de la función actual
  • info frame: Muestra información acerca de la pila
  • bt: Muestra las funciones por donde ha pasado el flujo del programa hasta llegar al punto actual
  • disassemble FUNCTION_NAME: Ver el código fuente de una función en ASM

Algo muy útil es definir comandos personalizados, por ejemplo si ponemos un break point en un bucle donde se modifica una variable, podemos definir el siguiente comando para monitorizar la variable en cada iteración del bucle:

define next_and_print
n
print VAR_NAME
end

 A partir de aquí tendremos a nuestra disposición un comando llamado "next_and_print" que ejecutará el siguiente paso de código e imprimirá el valor de VAR_NAME. 

Personalmente recomiendo instalar algún plugin del estilo peda/gef ya que nos resultará mas fácil la visualización de datos.

https://alfaexploit.com/readArticle/405

Si te ha gustado el artículo puedes invitarme a un redbull aquí.
Autor: kr0m -- 22/07/2020 01:14:17