> Не надо меня тыкать строчками с # man gdb > Объясните, зачем он нужен и как им пользоваться на простом > понятном русском языке :) Он нужен для отладки программ :)
Пользоваться им можно по-разному, например, один наш сотрудник им пользуется как калькулятором :) Но вообще-то обычно ему говоришь в командной строке, какой бинарник ты собираешься отлаживать, запускаешь его и дальше в приглашении gdb вводишь команды. Если ты отпустил бинарник в "свободный полет", когда находился под gdb (через команду run или cont), то тормознуть его можно при помощи Ctrl-C. Многое другое (в частности, доступные команды) можно узнать, набрав внутри gdb команду help (сюрприз? :)
Я очень часто пользуюсь gdb после того, как моя программа грохнулась. После нее в этом случае остается здоровый такой файл под названием core (либо core.<номер процесса>). В шелле я говорю gdb <имя_бинарника> <имя_core-файла> и смотрю, где прога упала, при каких значениях переменных, стека вызова и т.п.
И еще один способ запуска gdb - присоединяться к уже запущенному процессу. Соответственно, gdb <имя_бинарника> <номер_процесса>.
Естественно, использование gdb предполагает, что программа собрана с debug-символами (ключ -g в gcc). Хотя кое-что интересное можно узнать даже без них, особенно если владеешь ассемблером.
> Не надо меня тыкать строчками с # man gdb > Объясните, зачем он нужен и как им пользоваться на простом > понятном русском языке :) Он нужен для отладки программ :)
Пользоваться им можно по-разному, например, один наш сотрудник им пользуется как калькулятором :) Но вообще-то обычно ему говоришь в командной строке, какой бинарник ты собираешься отлаживать, запускаешь его и дальше в приглашении gdb вводишь команды. Если ты отпустил бинарник в "свободный полет", когда находился под gdb (через команду run или cont), то тормознуть его можно при помощи Ctrl-C. Многое другое (в частности, доступные команды) можно узнать, набрав внутри gdb команду help (сюрприз? :)
Я очень часто пользуюсь gdb после того, как моя программа грохнулась. После нее в этом случае остается здоровый такой файл под названием core (либо core.<номер процесса>). В шелле я говорю gdb <имя_бинарника> <имя_core-файла> и смотрю, где прога упала, при каких значениях переменных, стека вызова и т.п.
И еще один способ запуска gdb - присоединяться к уже запущенному процессу. Соответственно, gdb <имя_бинарника> <номер_процесса>.
Естественно, использование gdb предполагает, что программа собрана с debug-символами (ключ -g в gcc). Хотя кое-что интересное можно узнать даже без них, особенно если владеешь ассемблером.
where
print/printf
list
next
step
Пожалуй, для начала хватит. Для любой из них в приглашении gdb можно сказать help <команда>, чтобы узнать, что она делает.