Я печатал, help
пока был в GDB, но ничего не нашел о переходе, переходе и выходе. Я поставил точку останова в программе сборки в _start
( break _start
). После этого я набрал текст, next
и он закончил отладку. Я предполагаю, что это было, потому что это закончилось _start
и не вступило в действие, как я хотел.
Кто-нибудь, кто может помочь?
debugging
programming
gdb
Пичи Уана
источник
источник
Ответы:
help running
предоставляет некоторые советы:Есть
step
иnext
инструкции (а такжеnexti
иstepi
).Таким образом , мы можем видеть , что
step
шаги Into подпрограмм, ноnext
шагнет через подпрограмму.step
Иstepi
(и ,next
иnexti
) являются отличительными от «линии» или «инструкции» шагом.Связано это
finish
:Гораздо больше полезной информации можно найти по адресу https://sourceware.org/gdb/onlinedocs/gdb/Continuing-and-Stepping.html.
источник
for(i=0;i<10;i++) { printf("%d\n",i); }
одна строка источника, но несколько инструкций.finish
завершит текущий кадр стека, который обычно завершит текущую подпрограмму и вернется к вызывающей стороне.Я пришел сюда, потому что у меня был тот же вопрос. В конце концов я понял, что для своих целей в любое время я могу использовать что-то вроде «выхода из цикла», я могу просто установить другую
continue
точку останова после цикла, а затем позволить программе завершить цикл и затем запустить точку останова. Извините, если это очевидно для большинства людей, но, вероятно, это полезно для тех, кто ищет ответ на этот вопрос.источник