Я сгенерировал дамп ядра Linux с отладочными символами в целевой системе.Но я не могу отладить дамп с помощью GDB в хост-системе - PullRequest
0 голосов
/ 13 марта 2019

Я строю систему отладки для отладки исполняемого файла (например, coredump), который завис в удаленной системе. Символы отладки вместе с дампом ядра (например, coredump.dbg, coredump_core.dump) отправляются в хост-систему. В хост-системе, когда я использую GDB для анализа дампа, я получаю все эти ошибки, упомянутые ниже. Некоторые тела, пожалуйста, помогите, как общие библиотеки должны быть отправлены на хост. Если да, то как?

Как мне связать разделяемые библиотеки в символах отладки в хост-системе

следующие ошибки

1. readelf -a coredump.dbg

  ELF Header:
  Magic:   7f 45 4c 46 02 01 01 00 00 00 00 00 00 00 00 00
  Class:                             ELF64
  Data:                              2's complement, little endian
  Version:                           1 (current)
  OS/ABI:                            UNIX - System V
  ABI Version:                       0
  Type:                              EXEC (Executable file)
  Machine:                           Advanced Micro Devices X86-64
  Version:                           0x1
  Entry point address:               0x400720
  Start of program headers:          64 (bytes into file)
  Start of section headers:          14864 (bytes into file)
  Flags:                             0x0
  Size of this header:               64 (bytes)
  Size of program headers:           56 (bytes)
  Number of program headers:         9
  Size of section headers:           64 (bytes)
  Number of section headers:         36
  Section header string table index: 35

  readelf: Error: Unable to read in 0x900 bytes of section headers

  readelf: Error: Section headers are not available!

2. gdb coredump.dbg coredump_core.dump

GNU gdb (GDB) Red Hat Enterprise Linux (7.2-92.el6)
Copyright (C) 2010 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later      <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-redhat-linux-gnu".
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>...
**"/root/coredump.dbg": not in executable format: File format not recognized
"/root/coredump_core.dump" is not a core dump: File format not recognized
(gdb)**

3.file coredump.dbg

coredump.dbg: ERROR: ELF 64-bit LSB executable, x86-64, version 1 (SYSV),             statically linked (uses shared libs)error reading (Invalid argument)

1 Ответ

0 голосов
/ 14 марта 2019

Как мне связать общие библиотеки в символах отладки в хост-системе

Ваша проблема не имеет ничего общего с какими-либо общими библиотеками (у вас также может быть проблема с ними, но сначала вам нужно решить непосредственную проблему).

Ваша непосредственная проблема в том, что ваш бинарный файл: coredump.dbg каким-то образом поврежден. Это ключевое сообщение от readelf: Error: Unable to read in 0x900 bytes of section headers.

Это может произойти несколькими способами:

  1. У вас есть глючный компоновщик (это очень маловероятно).
  2. Вы используете некоторую комбинацию objcopy и / или strip и не делаете это правильно.
  3. Вы передаете файл между целью и хостом таким способом, который его повреждает (например, с помощью ASCII -режима FTP-передачи).
...