2014-12-28 7 views
6

Ho installato GDB 7.8.1 e GCC 4.9 tramite Homebrew.Homebrew GDB non può aprire il file principale su Yosemite 10.10

Quando apro un file core generato da un programma di GCC-compilato (gcc-4.9 -g xxx.c -o xxx), si riporta:

→ gdb ./list_test /cores/core.1176 
GNU gdb (GDB) 7.8.1 
Copyright (C) 2014 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-apple-darwin14.0.0". 
Type "show configuration" for configuration details. 
For bug reporting instructions, please see: 
<http://www.gnu.org/software/gdb/bugs/>. 
Find the GDB manual and other documentation resources online at: 
<http://www.gnu.org/software/gdb/documentation/>. 
For help, type "help". 
Type "apropos word" to search for commands related to "word"... 
Reading symbols from ./list_test... 
warning: `/var/folders/r1/3sx4x5k1557g_v5by83k4hg00000gn/T//cchuMtAU.o': can't open to read symbols: No such file or directory. 
(no debugging symbols found)...done. 
"/cores/core.1176": no core file handler recognizes format 

I Googled e trovato qualcuno ha suggerito di utilizzare LLDB invece di GDB.

È possibile utilizzare GDB per eseguire il debug del file principale? Ed è perché GDB non supporta il formato binario su Yosemite?

risposta

12

Sulla base di the long GDB developers' discussion thread on this issue, sembra che Apple non abbia unito le loro modifiche alla linea principale ufficiale di GNU e abbia scelto di pubblicare il codice sorgente modificato sul proprio sito. Di conseguenza, l'installazione Homebrew GDB (che utilizza i sorgenti GDB originali) non può caricare i file principali OS X.

A questo punto, vedo tre scelte:

  1. cedere e imparare LLDB. C'è un GDB to LLDB cheat sheet per aiutare.

  2. Installa il GDB personalizzato di Apple da MacPorts. Ho lungo abbandonato MacPorts, quindi non posso provarlo, ma se avete MacPorts installati, provare quanto segue:

    $ sudo port install gdb-apple 
    $ codesign -s <your_GDB_cert_id> /opt/local/bin/gdb-apple 
    $ /opt/local/bin/gdb-apple ./list_test /cores/core.1176 
    
  3. Translate MacPorts' patch GDB e costruire spec in una formula Homebrew. È teoricamente possibile, ma non ho il tempo di farlo da solo.

Personalmente, ho scelto di imparare solo LLDB. Apple è passata definitivamente a LLVM, quindi è probabilmente solo una questione di tempo prima che il vecchio GDB con patch smetta di funzionare con gli ultimi e più grandi strumenti Xcode.