Запускайте свой код в gdb, пока не доберетесь до ошибки. Затем сделайте обратный след, чтобы узнать, где это было.
Вот набор команд, которые вы будете вводить для этого:
gdb myprogram
run
***Make it crash***
backtrace
Печать backtrace напечатает стек вызовов и покажет вам, по какому пути следовал код, чтобы добраться до точки, где происходит ошибка.
Вы можете идти вверх и вниз по стеку к своему коду, набрав соответственно «вверх» или «вниз». Затем вы можете изучить переменные в этой области.
Так, например, если ваша команда backtrace напечатает это:
linux_black_magic
more_linux
libc
libc
yourcode.c
Несколько раз введите 'up', чтобы в вашем коде был фрейм стека, а не linux. Затем вы можете проверить переменные и память, на которой работает ваша программа. Сделайте это:
print VariableName
x/10 &Variable
Это напечатает значение переменной, а затем напечатает шестнадцатеричный дамп памяти, начиная с переменной.
Это некоторые общие приемы, которые можно использовать с GDB и отладкой, опубликуйте подробности для более подробных ответов.