Я не могу установить точки останова и не вижу поток с ddd / gdb после обновления до моей ОС

#c #gdb

#c #gdb

Вопрос:

Я только что перешел с Ubuntu 10.04 на новую версию 11.04, и когда я пытаюсь отлаживать с ddd/gdb , я больше не могу устанавливать точки останова и не вижу поток, пока отладчик выполняет мою программу.

Я получаю сообщения об ошибках, в которых говорится

   (gdb)b MyFile.cpp:27
  No line 27 in file "MyFile.cpp".
  

Когда я начинаю запускать вызов своего приложения r , я также вижу следующее текстовое сообщение, которое, как мне кажется, связано с моей проблемой. Отладчики перехватывают все утверждения, но я не могу остановиться ни в какой момент.

   (gdb) r
  BFD: /lib/x86_64-linux-gnu/libc.so.6: invalid relocation type 37
  BFD: BFD (GNU Binutils) 2.18.50.20080226 assertion fail elf64-x86-64.c:278
  BFD: /lib/x86_64-linux-gnu/libc.so.6: invalid relocation type 37
  BFD: BFD (GNU Binutils) 2.18.50.20080226 assertion fail elf64-x86-64.c:278
  

Если я хочу просмотреть файл, отладчики открывают файл со мной, но я получаю следующее сообщение об ошибке

  (gdb) list MyFile.cpp:27
 Line number 27 is out of range for "MyFile.cpp".
  

Вы можете мне помочь?
Я прочитал какой-то форум с просьбой проверить результат info source и info sources , и это то, что у меня есть, но я не знаю, что с этим делать.

  (gdb) list MyFile.cpp:27
 Line number 27 is out of range for "MyFile.cpp".
 (gdb) info source
 Current source file is /usr/local/include/boost/exception/exception.hpp
 Compilation directory is /home/emanueler/trunk/tools/myAppBinary
 Located in /usr/local/include/boost/exception/exception.hpp
 Contains 436 lines.
 Source language is c  .
 Compiled with unknown debugging format.
 Includes preprocessor macro info.
  

Почему написано «Скомпилировано с неизвестным форматом отладки». когда я предоставляю -g опцию в компиляторе?

Ответ №1:

Кажется, все инструменты, связанные с компиляцией, также были обновлены, включая GCC. Было бы лучше, если бы вы перекомпилировали все свое приложение в этой новой среде, прежде чем пытаться отладить его снова.

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

Комментарии:

1. Это не работает даже с приложением hello? Что-то очень не так. Я бы переустановил build-essential .

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