Символы отладки присутствуют, но затмение не связывает их с исходным кодом - PullRequest
1 голос
/ 25 июня 2011

Я работаю над модификацией довольно большой программы (сетевой симулятор NS2), и было бы неплохо отладить ее с помощью Eclipse.Я сконфигурировал make-файлы (добавьте -g к CFLAGS), чтобы gcc генерировал символы отладки, и они действительно генерируются, но Eclipse отказывается найти код, связанный с этими символами.Я импортировал ОГРОМНУЮ папку с исходным кодом, используя «Makefile Project с существующим кодом», и когда я нажимаю «debug», он запускает программу.Когда я говорю отладчику остановиться, он часто останавливается в методе, который я узнаю, но когда я нажимаю на имя метода, он говорит «источник недоступен», даже если исходный файл, в котором определен метод, фактически открыт в другой вкладке.У меня есть все источники, импортированные в проект.Я что-то упускаю в конфигурации make?

^ длинное запутанное объяснение, я знаю ... см. Скриншот: http://imageshack.us/photo/my-images/651/zzz1fu.jpg/

Обратите внимание, что IPKTAgent :: deBurst () из скриншота вышеобъявлен в интегрированном_агенте.h - это файл, который я открыл на другой вкладке.

также, когда я раскрываю запись для исполняемого файла, который я отлаживаю в проводнике проекта, в нем перечислены только некоторые изфайлы, из которых он состоит.Что дает?(см. скриншот, в списке должно быть больше файлов, те, с которыми я работаю, отсутствуют).снимок экрана: http://imageshack.us/photo/my-images/96/zzz2z.jpg/

1 Ответ

1 голос
/ 25 июня 2011

Только что проверил. Работает для меня. Единственная проблема заключалась в том, что я забыл добавить опцию -O0, чтобы отключить оптимизацию; это может быть проблемой и в вашем случае.

Что я могу предложить:

  • Попробуйте отключить оптимизацию
  • Убедитесь, что используемые вами параметры компилятора действительно применены. Вы используете CFLAGS, но я вижу c ++ в тегах, поэтому возможно, что вы должны использовать CXXFLAGS (это может зависеть от используемых вами инструментов сборки)
  • IPKTAgent::deBurst() объявлено в integrated_agent.h. Но где это реализовано? Убедитесь, что оно реализовано в заголовке и / или вы можете получить доступ к исходному файлу, в котором оно реализовано.
  • Убедитесь, что вы можете отлаживать свой исполняемый файл с помощью gdb
  • Попробуйте создать простой проект на основе automake / autoconf и убедитесь, что вы можете отлаживать его в gdb и eclipse. Вы должны быть в состоянии.
...