2013-04-21 2 views
0

Im делает проект, который работает с файлами ELF. Сейчас Im, используя следующие в качестве входа образца -В файле ELF нет .debug_str?

class C { 
public: 
    C(); 
    C(int x, int y); 
    int getX(); 
private: 
    int x; 
    int y; 
}; 

class SubC : public C { 
    int z; 
}; 

int f() {return 0;} 

C c; 
SubC subC; 

int i; 
double d; 

Я затем запустить

gcc test.cpp -g -c -o test.o 

и я получаю test.o, как и ожидалось. Затем я загружаю test.o в библиотеку, которую я нашел, называется peter-dwarf. Моя проблема заключается в том, что в библиотеке сказано: «no section .debug_str найдено в test.o»

Я что-то не так во время компиляции? Или библиотека не работает?

Edit: должны были -g в там

+1

«Я что-то не так?» - нет. «Библиотека не работает» - возможно. Чтобы понять, что здесь происходит, добавьте вывод из 'readelf -S test.o'. –

+0

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

ответ

0

Возможно, вам нужно скомпилировать с отладочной информацией включена. Попробуйте:

gcc -g test.cpp -c -o test.o 
1

Использование -g в НКУ для формирования символов отладки. Вы также можете обратиться к документации по вариантам отладки gcc here.

Только один -g может не включать информацию DWARF, если ваша система настроена каким-то образом. Существует несколько переключателей, связанных с DWARF, поэтому, если -g не работает, вам может потребоваться пойти туда и калечить с другими коммутаторами.

+0

Извините, я забыл добавить это в мой вопрос. Я положил это, и Im STILL не получил .debug_str. –

+0

У меня нет программного обеспечения под моей рукой, но есть такие вещи, как версия '-gdwarf-version' [2-4],' -gstrict-dwarf', '-gsplit-dwarf' и, возможно, еще несколько. Попробуйте это тоже. Не должно быть слишком рискованным. – luk32

Смежные вопросы