#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 можно отладить. Я пытаюсь перестроить также другие библиотеки, которые зависели от моей программы, но у меня все та же проблема.