Estoy tratando de utilizar GDB para depurar (para encontrar un molesto violación de segmento). Cuando ejecuto:

gdb ./filename

desde la línea de comandos, me sale el siguiente error:

This GDB was configured as "i686-pc-linux-
gnu"..."/path/exec": not in executable 
format: File format not recognized

Cuando ejecuto:

file /path/executable/

Puedo obtener la siguiente información:

 ELF 64-bit LSB executable, AMD x86-64,
 version 1 (SYSV), for GNU/Linux 2.4.0, 
 dynamically linked (uses shared libs), not stripped

Estoy usando GDB 6.1, y el ejecutable compilado con gcc versión 3.4.6.

Estoy un poco fuera de mi agua en términos de uso de gdb, pero como lo que yo puedo decir es que debe estar trabajando en esta instancia. Cualquier idea de lo que va mal?

OriginalEl autor pbh101 | 2008-11-09

5 Comentarios

  1. 21

    El ejecutable de 64 bits (x86-64) y el depurador de 32 bits (i686-pc-linux) construir. Puede que necesite instalar un sistema de 64 bits (x86-64) versión del depurador.

    gracias. pensé que esto podría ser el problema, y resulta que hay una versión de 64 bits de gdb instalado en una más oscuras de la ruta de acceso en la misma máquina.
    Gracias – tuve este problema después de instalar el debian gdb:i386 paquete y algunos otros hace un par de días con el fin de evitar la creación de un entorno chroot para construir una versión i386 de un paquete debian.
    Fue bastante lo mismo para mí, cuando yo no podía depurar una aplicación de android de QtCreator. 32 gdbserver fue utilizado mientras que yo tenía 64 bits dispositivo android

    OriginalEl autor ConcernedOfTunbridgeWells

  2. 5

    No estoy seguro de si este es tu problema, pero me enfrenté a esta situación muy a menudo. El ejecutable en la construcción del árbol, construir por hacer/automake no es un binario, pero una secuencia de comandos, así que usted puede utilizar gdb con ella. Intente instalar la aplicación y cambiar el directorio, porque otra cosa gdb intenta depurar el script.

    Esta no es mi problema, pero es algo que he comprobado. Gracias por la ayuda. Por lo que puedo decir, puede ejecutar file en el ejecutable para ver si se trata de un binario.
    ¿puedes explicar un poco más lo que u significa por Try to install the application and change the directory , acabo de tener el mismo problema, al comprobar el tipo de archivo que se POSIX shell script
    Con instalar me refería a make install. Pero una instalación ist en realidad no es necesario. Siga la explicación aquí: sourceware.org/autobook/autobook/…
    cuando se ejecuta libtool --mode=execute gdb th todavía a dar el mismo error . he trasladado la pregunta a otro hilo aquí stackoverflow.com/questions/30663780/…

    OriginalEl autor quinmars

  3. 4

    La pregunta se refiere a «./nombre de archivo» y «/ruta/archivo ejecutable». Son estos el mismo archivo?

    Si usted está haciendo un análisis post-mortem, se debe ejecutar:

    gdb executable-file core-file

    Si usted va a ignorar el archivo central, se debe ejecutar:

    gdb executable-file

    En ambos casos, ‘executable-file«, un nombre de ruta del binario desea depurar. La mayoría de los casos, que en realidad es un simple nombre de archivo en el directorio actual, ya que tienes el código fuente de su generación de depuración allí.

    En Solaris, una de 64 bits compilación de GDB se supone que es capaz de depuración, tanto de 32 bits y de 64 bits ejecutables (aunque he tenido algunos problemas con las versiones más recientes de GDB). No estoy seguro de lo contrario – de que una de 32 bits GDB puede necesariamente de depuración de 64 bits ejecutables.

    OriginalEl autor Jonathan Leffler

  4. 2

    Lo que usted necesita para comprobar, es realmente el bfd de la biblioteca. El binario descriptor de archivo de la biblioteca es lo que binutils /gdb utiliza para realmente analizar y manejar los archivos binarios (ELF/a.etc..).

    Puedes ver las plataformas soportadas a través de objdump;

    # objdump -H
    
    objdump: supported targets: elf32-powerpc aixcoff-rs6000 elf32-powerpcle ppcboot elf64-powerpc elf64-powerpcle elf64-little elf64-big elf32-little elf32-big srec symbolsrec tekhex binary ihex
    objdump: supported architectures: rs6000:6000 rs6000:rs1 rs6000:rsc rs6000:rs2 powerpc:common powerpc:common64 powerpc:603 powerpc:EC603e powerpc:604 powerpc:403 powerpc:601 powerpc:620 powerpc:630 powerpc:a35 powerpc:rs64ii powerpc:rs64iii powerpc:7400 powerpc:e500 powerpc:MPC8XX powerpc:750
    
    The following PPC specific disassembler options are supported for use with
    the -M switch:
      booke|booke32|booke64    Disassemble the BookE instructions
      e300                     Disassemble the e300 instructions
      e500|e500x2              Disassemble the e500 instructions
      efs                      Disassemble the EFS instructions
      power4                   Disassemble the Power4 instructions
      power5                   Disassemble the Power5 instructions
      power6                   Disassemble the Power6 instructions
      32                       Do not disassemble 64-bit instructions
      64                       Allow disassembly of 64-bit instructions

    OriginalEl autor RandomNickName42

  5. 1

    Parece que su Depurador de GNU (gdb) no admite la arquitectura x86_64.

    Así que trate de LLDB Depurador ( lldb ), que pretende sustituir. Es compatible con i386, x86-64 y el BRAZO conjuntos de instrucciones.

    Está disponible por defecto en BSD/OS X, Linux instalar a través de: sudo apt-get install lldb (o utilice yum).

    Ver: gdb lldb mapa de comandos página para más información.

    OriginalEl autor kenorb

Dejar respuesta

Please enter your comment!
Please enter your name here