контрольные точки в GDB - PullRequest
       14

контрольные точки в GDB

2 голосов
/ 27 ноября 2009

Я думаю, что это, возможно, задавали ранее, но я не могу найти тот, который удовлетворял бы моим требованиям.

Я отлаживаю (на самом деле пытаюсь понять) большой проект, пытаясь проанализировать поток кода в различных тестовых пакетах. Но когда я пытаюсь установить точки останова для некоторых файлов, я получаю сообщение об ошибке «не найден исходный файл с именем filename».
Итак, мой вопрос:

  1. Может ли gdb принимать точки останова только для исходных файлов, в которые входит поток кода .?
  2. Могу ли я установить точки останова на целые строки файла с чем-то вроде b filename:*
  3. Будет ли принята точка останова в заголовочном файле, поскольку заголовочные файлы просто добавляются во время компиляции?

Любые идеи приветствуются.

Редактировать
Я проверил эти проблемы с помощью некоторого кода hello world и нашел те же результаты, которые указаны в одном из ответов. Но моя проблема в реальном проекте все еще остается. Я по-прежнему получаю ту же ошибку, даже когда вижу отредактированный вывод той же строки, который не принимается как точка останова.

Редактировать 2
Я получил это работает, но не понимаю, как и почему это работает .. ??

<code>
(gdb) b /home/neeraj/BTP/trunk/include/header.h:872
No source file named /home/neeraj/BTP/trunk/include/header.h:872
Make breakpoint pending on future shared library load? (y or [n]) n
(gdb) b /home/neeraj/BTP/trunk/src/driver.cpp:2
Breakpoint 1 at 0x806c61a: file ../../../trunk/src/driver.cpp, line 2.
(gdb) b /home/neeraj/BTP/trunk/include/header.h:872
Breakpoint 2 at 0x8052fa0: file ../../../trunk/include/header.h:872, line 872.
(gdb)

Какие-нибудь более глубокие идеи ..?

Ответы [ 2 ]

8 голосов
/ 27 ноября 2009
  1. номер
  2. номер
  3. Да.

Убедитесь, что вы скомпилировали с опцией -g (отладка). Убедитесь, что исходные пути установлены правильно. Используйте каталог, покажите каталоги и команды dir, чтобы увидеть / установить.

6 голосов
/ 28 ноября 2009

Кроме общих библиотек, следует остерегаться и того, что gdb имена исходных файлов относятся к каталогу, в котором был скомпилирован код. Если вы не скомпилировали с абсолютными путями, используйте команду dir, чтобы добавить каталог компиляции в список мест, gdb ищет исходный код.

И подсказка: я нахожу себя намного более продуктивным, когда использую Отладчик отображения данных (DDD) Графический интерфейс до gdb.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...