Как поручить GDB устанавливать точки останова во всех моих функциях, не замедляя работу? - PullRequest
0 голосов
/ 28 ноября 2018

У меня есть исполняемый файл, который был собран из множества файлов * .c и * .h.Когда я использую следующую команду GDB для добавления точек останова:

rbreak .

, она выполняет свою работу, но для этого требуется ОЧЕНЬ много времени, потому что она хочет поместить точки останова в libc,openssl и другие функции от сторонних библиотек, которые мне действительно безразличны.

Как быстро добавить эти точки останова в мои функции?

Вот некоторые идеикак это может быть достигнуто, но я не уверен, поддерживает ли GDB какой-либо из них

  1. инструктировать GDB не устанавливать точки останова в сторонних библиотеках;или
  2. путем отключения подтверждения GDB для каждой добавленной точки останова (она выводится на консоль и также может замедлять работу).
  3. каким-то образом совпадать с regex для файлов при вызове команды rbreak?

Обратите внимание, что у моих функций нет шаблона именования, который мог бы соответствовать регулярному выражению.

1 Ответ

0 голосов
/ 28 ноября 2018

поручить GDB устанавливать точки останова во всех моих функциях

В общем, этот запрос предполагает, что у вас может быть проблема XY .Я использую GDB более 20 лет для всех видов программ, и мне трудно найти причину, по которой вы хотите делать то, что хотите.

При этом, по-видимому, более новые версии GDBподдержка rbreak foo.cc:.* синтаксиса, так как этот ответ указывает.См. Также этот ответ для альтернативного рецепта.

Обновление:

Что я пытаюсь сделать, поставив все эти точки останова, так этоиспользовать gdb в качестве трассировщика

Хорошо, у вас do есть проблема XY.Вместо использования GDB в качестве трассировщика, скомпилируйте в фактический трассер - он будет в 1000 раз быстрее и будет просто работать (TM).Инструкции здесь и здесь .

...