Предупреждения gdb 7.0: неправильный размер fpregset в файле ядра

reПри анализе основного файла мой gdb 7.0 выводит несколько предупреждений:

warning: Wrong size gregset in core file.
warning: Wrong size fpregset in core file.
warning: Wrong size gregset in core file.
warning: Wrong size fpregset in core file.
warning: Unable to find dynamic linker breakpoint function.
GDB will be unable to debug shared library initializers
and track explicitly loaded dynamic code.

Я не уверен, связано ли это, но я не могу получить обратную связь:

(gdb) bt
#0  0x00000000 in ?? ()

Архитектура ОС — SUN Solaris 10 SPARC.

Вопросы:

  1. Какова причина / причина этих предупреждений?
  2. Почему я не могу получить обратную трассировку?
  3. Как исправить эти проблемы?

person MRalwasser    schedule 13.01.2012    source источник


Ответы (2)


Проблема может и в gdb, и в вашей программе. Я бы рекомендовал обновить gdb до самой последней версии (7.3.1). Также может быть полезно создать простую тестовую программу и проанализировать ее ядро ​​с помощью gdb, чтобы убедиться, что ваша утилита работает нормально.

«gregset» и другие ошибки указывают на то, что gdb не может прочитать данные из основного файла. Это может произойти, если ваша программа вышла из-под контроля и повредила стек. Ошибка gregset означает, что gdb не удалось прочитать набор регистров общего назначения из основного файла. fpregset предназначен для набора регистров с плавающей запятой. Ожидаемый размер регистра зависит от платформы.

bt не будет работать, если вы не можете правильно прочитать основной файл.

person Yodo    schedule 13.01.2012

У меня также были предупреждения fpregset (и отсутствие трассировки стека), когда я пытался работать с 64-битным дампом ядра с помощью gdb 7.6.2 на Solaris 10. Причина, по-видимому, в том, что приложения пользовательского пространства Solaris 10 по умолчанию скомпилированы с 32-битами. - и без поддержки 64-битных ядер.

Ребята из IRC-канала GDB дали мне следующий параметр:

--enable-64-bit-bfd

Я также скомпилировал 64-битную версию gdb (-m64), но в этом нет необходимости. Теперь gdb мог работать с дампом 64-битного ядра и создавать трассировку стека без каких-либо предупреждений.

person thorstenhirsch    schedule 23.12.2013