эффективно использовать GDB - PullRequest
0 голосов
/ 07 февраля 2011

Я привык довольно эффективно использовать gdb, когда имею дело с двоичными файлами ELF, которые были скомпилированы с использованием флага -ggdb. Однако есть несколько трудностей, с которыми я сталкиваюсь, когда сталкиваюсь с normal non-stripped двоичными файлами.

  1. Я могу установить точку останова на main, но что если мне нужно установить точку останова с фиксированным смещением (скажем, 10 строк) от начала main?
  2. Обычно я получаю адрес массива символов (скажем, buf) как print &buf. Однако в текущем случае я получаю сообщение о том, что buf не может быть найдено в текущем контексте.

Как мне справиться с вышеупомянутыми проблемами? Было бы замечательно, если бы вы могли предоставить немного материала для чтения.

1 Ответ

4 голосов
/ 07 февраля 2011

Чтобы получить такие вещи, как номер строки исходного кода и переменную информацию, ваш код должен быть скомпилирован с символами отладки (-ggdb или аналогичными). Компиляция без отладочных символов, но без разметки сохраняет имена функций и глобальных переменных, но не более того. Удаление исполняемого файла даже удаляет некоторые из них. Так что, отвечая на ваш вопрос, вы не можете делать то, что хотите, не компилируя с -g.

...