В Gdb, как установить условную точку останова на 3-ю строку функции

Как я могу установить условную точку останова на 3-ю строку функции в GDB?

Я знаю, что мог дать имя файла + номер строки, но это не работает на меня.
Я должен сохранить команды gdb как сценарий для повторения его позже, и я не хочу изменять сценарий каждый раз, когда исходный файл изменяется.

5
задан Vereb 10 June 2010 в 09:31
поделиться

2 ответа

Как насчет определения собственного командного файла для gdb, а затем просто его источника во время отладки? Это поможет уменьшить количество набора текста. Попробуйте следующее:

Создайте файл, назовем его mydef, и вот его содержимое:

define cmd
  b function-where-you-want-to-break
  r
  b +2
  c
end

После загрузки исполняемого файла в gdb введите source mydef в приглашении gdb, а затем cmd

Теперь вы во второй строке, с которой началась функция. :) Надеюсь это поможет!

4
ответ дан 14 December 2019 в 04:30
поделиться

Условные точки останова


Введите следующее,
предполагая, что вы должны применить точку останова на строке внутри функции

(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

4
ответ дан 14 December 2019 в 04:30
поделиться
Другие вопросы по тегам:

Похожие вопросы: