Вопрос

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

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

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

Любая информация более чем приветствуется.

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

Правка 2
У меня это работает, но я не понимаю, как и почему это работает ..??


(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)

Есть какие-нибудь более глубокие прозрения ..?

Это было полезно?

Решение

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

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

Другие советы

  1. Нет.
  2. Нет.
  3. ДА.

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top