Как я могу установить условную точку останова на 3-ю строку функции в GDB?
Я знаю, что мог дать имя файла + номер строки, но это не работает на меня.
Я должен сохранить команды gdb как сценарий для повторения его позже, и я не хочу изменять сценарий каждый раз, когда исходный файл изменяется.
Как насчет определения собственного командного файла для gdb, а затем просто его источника во время отладки? Это поможет уменьшить количество набора текста. Попробуйте следующее:
Создайте файл, назовем его mydef, и вот его содержимое:
define cmd
b function-where-you-want-to-break
r
b +2
c
end
После загрузки исполняемого файла в gdb введите source mydef
в приглашении gdb, а затем cmd
Теперь вы во второй строке, с которой началась функция. :) Надеюсь это поможет!
Введите следующее,
предполагая, что вы должны применить точку останова на строке внутри функции
(gdb) break <function-name>
GDB ответит следующим образом Breakpoint 1 at 0xaddr: filename , linenumber.
Обратите внимание на номер точки останова
( в данном случае это 1 )
Введите следующую команду
( замените номер точки останова соответствующим образом )
(gdb) condition 1 <condition>
Во время выполнения вы можете перейти (step-over) к 3-й строке, используя команду next дважды
(gdb) next
(gdb) next
... и вы в 3-й строке функции!!!
UPDATE:
Кроме того, для прерывания при изменении значения переменной используйте следующее:
(gdb) watch variable==value
Для получения более подробной информации, пожалуйста, обратитесь к :
- GDB:Условные точки останова
- Взлом исполняемого файла с помощью GDB