Предупреждения GDB 7.0: неверный размер fpregset в основном файле - PullRequest
0 голосов
/ 13 января 2012

При анализе файла ядра мой 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. Как исправить эти проблемы?

Ответы [ 2 ]

0 голосов
/ 23 декабря 2013

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

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

--enable-64-bit-bfd

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

0 голосов
/ 13 января 2012

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

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

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

...