Вопрос
Я думаю, что этот вопрос, возможно, задавался ранее, но я не могу найти тот, который удовлетворял бы моим требованиям.
Я отлаживаю (фактически пытаюсь понять) большой проект, пытаясь проанализировать поток кода в различных тестовых наборах.Но когда я пытаюсь установить точки останова для некоторых файлов, я получаю сообщение об ошибке "исходный файл с именем filename не найден".
Итак, мой вопрос заключается в следующем:
- Может ли gdb принимать точки останова только для исходных файлов, куда поступает поток кода.?
- Могу ли я установить точки останова для целых строк файла с помощью чего-то вроде
b filename:*
- Будет ли принята точка останова в файле заголовка, поскольку файлы заголовков просто добавляются во время компиляции?
Любая информация более чем приветствуется.
Редактировать
Я проверил эти проблемы с помощью некоторого кода 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
.
Другие советы
- Нет.
- Нет.
- ДА.
Убедитесь, что вы компилируете с параметром -g (debug).Убедитесь, что исходные пути заданы правильно.Используйте команды directory, show directories и dir для просмотра / установки.