Урок 25: gdb — отладка native-кода и core dumps
Ваша программа на C++ падает с segfault — null pointer dereference, stack overflow, buffer overflow. Как найти строку, которая это вызвала? gdb (GNU Debugger) — стандартный инструмент для отладки native-кода в Linux. Он позволяет останавливаться на breakpoints, проходить код строка за строкой, прове
gdb — как детектив, умеющий останавливать время. Когда программа падает, он спрашивает: «Каким было значение этой переменной в момент падения? Кто вызвал эту функцию? Где именно мы были?» core dump — это снимок памяти, сохранённый в момент падения, — как фотография места преступления, которую можно изучать спустя часы после происшествия.
- gdb (GNU Debugger)
- Стандартный debugger для C/C++ в Linux. Позволяет пошаговое выполнение, breakpoints, проверку переменных и анализ core dumps.
- точка останова (breakpoint)
- Указание gdb остановить выполнение при достижении конкретной строки кода. Позволяет проверить состояние программы в точный момент.
- backtrace (bt)
- Команда gdb, отображающая текущий call stack: список всех функций, которые были вызваны и ещё не вернулись, от самой новой к самой старой.
- core dump
- Файл, создаваемый при падении программы и содержащий снимок памяти программы, registers и call stack в момент падения. gdb может анализировать его post-mortem.
- watchpoint
- Как breakpoint, но на переменной: gdb останавливается каждый раз, когда переменная меняет значение. Полезно для поиска места в коде, где значение меняется, хотя не должно.