Lección 25: gdb — Depuración de código nativo y core dumps
Tu programa C++ se cae con un segfault — null pointer dereference, stack overflow, buffer overflow. ¿Cómo encuentras la línea que lo causó? gdb (GNU Debugger) es la herramienta estándar para depurar código nativo en Linux. Permite detenerse en breakpoints, avanzar línea por línea, inspeccionar valor
gdb es como un detective que puede congelar el tiempo. Cuando un programa se cae, pregunta: '¿cuál era el valor de esta variable en el momento de la caída? ¿Quién llamó a esta función? ¿Dónde estábamos exactamente?' Un core dump es una foto de la memoria guardada en el momento de la caída — como la foto de una escena del crimen que puedes examinar horas después de que ocurrió el evento.
- gdb
- El debugger estándar para C/C++ en Linux. Permite ejecución paso a paso, breakpoints, inspección de variables y análisis de core dumps.
- punto de interrupción (breakpoint)
- Una instrucción a gdb para detener la ejecución al llegar a una línea específica del código. Permite inspeccionar el estado del programa en un punto exacto.
- backtrace
- Un comando de gdb que muestra el call stack actual: la lista de todas las funciones llamadas y aún no retornadas, de la más reciente a la más antigua.
- core dump
- Un archivo creado cuando un programa se cae, que contiene una instantánea de la memoria del programa, los registros y el call stack en el momento de la caída. gdb puede analizarlo post-mortem.
- watchpoint
- Como un breakpoint pero sobre una variable: gdb se detiene cada vez que la variable cambia de valor. Útil para encontrar dónde en el código cambia un valor que no debería cambiar.