2011-12-28 6 views
1

Мне было интересно, знает ли кто-нибудь, как читать формат отладки по умолчанию для данной платформы.команда для определения формата отладки по умолчанию

Если вы хотите помочь мне дальше, вот и полная картина. У меня возникают проблемы с gcc, хранящим полный путь к некоторым исходным файлам в библиотеке (gsl) в xubuntu 11.10, но не делая этого в кластере пород с redhat. xubuntu имеет gcc 4.6, а в red hat - 4.1; кластер redhat - x64, а xubuntu - x32. Это те различия, о которых я знаю. Проблема в том, что gdb находит исходные файлы в ubuntu, но не в redhat; в redhat хранятся только имена исходных файлов (источники информации) без пути. Действительно странная вещь (IMO) заключается в том, что код и make-файлы одинаковы на обеих платформах, единственная разница - это пути (которые являются абсолютными в обоих).

Итак, в этот момент моя единственная подсказка заключается в том, что каким-то образом формат отладки по умолчанию не является ударом на обеих платформах. Поэтому я хотел проверить их на каждой платформе. Но если вы можете дать мне руку с общей проблемой, я бы ее очень признателен.

ответ

1

Вы можете попробовать утилиту dwarfdump, чтобы получить дополнительную информацию об отладочной информации в двоичных файлах на разных платформах.

Я был бы удивлен, если бы формат отладки был ударом на любой платформе, если вы явно не запросили его с помощью -gstabs в качестве аргумента gcc. Я почти уверен, что DWARF долгое время был по умолчанию для linux intel gcc. Вы можете проверить, используя readelf -S <binary>, чтобы найти раздел .stab или .stabstr, чтобы увидеть, действительно ли он использует stabs.

+0

Привет, прежде всего за вашу помощь. Я попробовал компиляцию с -g и -gstabs +, и, как вы сказали, в версии gstabs + были разделы .stab и .stabstr. У простых-g не было таких на любой платформе, поэтому я буду считать DWARF на обоих. Используя предложенный вами инструмент, о котором я не знал (readelf), я заметил, что единственная запись, которая отличается между двумя двоичными файлами, это '.note.gnu.build-i' типа' NOTE', присутствующая в версии xubuntu , Может ли это иметь значение? Есть ли у вас какие-либо предложения о том, как попытаться получить эти абсолютные пути в двоичном отладке redhat? – nixahn

+0

Я не администратор кластера, поэтому я не могу попробовать dwarfdump, потому что он не установлен. Администратор уже установил gdb для меня, поэтому я не могу сильно продвинуть его дальше в этом направлении ... – nixahn

+0

Ну, вы всегда можете компилировать dwarfdump и libdwarf из источников, у них есть инструкции по ссылке, которую я предоставил ранее. У меня действительно нет больших дополнительных идей о том, почему двоичные файлы разные. Однако, возможно, вы можете обойти эту проблему, используя команду «directory» gdb, чтобы сообщить gdb, где искать источники в установке, где пути не записываются в информацию об отладке. – acm

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