2011-01-05 15 views
7

Il mio programma è compilato con il flag -g. Sto avendo il seguente problema:gdb: errore interno impostazione dei breakpoint

1) Ho impostato un punto di interruzione in una funzione che si trova in un file di intestazione.

Il punto di interruzione funziona. Ora, quando salgo di livello due, è necessario portarmi in un file C (Sizer.C: 505). Lo fa, ma ho un sacco di avvertimenti:

warning: (Internal error: pc 0xff6323 in read in psymtab, but not in symtab.) 
warning: (Internal error: pc 0xff6324 in read in psymtab, but not in symtab.) 
warning: (Internal error: pc 0xff6323 in read in psymtab, but not in symtab.) 
warning: (Internal error: pc 0xff6323 in read in psymtab, but not in symtab.) 
#2 0x0000000000ff6324 in SizePacketImpl<ZValue>::begin_x (this=warning: (Internal error: pc 0xff6323 in read in psymtab, but not in symtab.) 
0x4888a88, bi=warning: (Internal error: pc 0xff6323 in read in psymtab, but not in symtab.) 
0x56e6968) at Sizer.C:505 
505   ASSERTo(...some parameters ....); 
warning: (Internal error: pc 0xff6323 in read in psymtab, but not in symtab.) 

2) Se io SOCIETÀ (dopo essere andato a due livelli quando il programma è in stato di pausa) cerco di impostare direttamente nel punto di interruzione Sizer.C

(gdb) break Sizer.C:504 
warning: (Internal error: pc 0xff6323 in read in psymtab, but not in symtab.) 

Breakpoint 3 at 0xff1bc7: file Sizer.C, line 504. 
warning: (Internal error: pc 0xff6323 in read in psymtab, but not in symtab.) 

Il programma non si ferma affatto al punto di interruzione.

3) Solo per completezza: se imposto il punto di interruzione in Sizer.C prima dell'esecuzione del programma, non ricevo gli avvisi, ma il programma non si interrompe.

Voglio impostare i punti di interruzione in Sizer.C. Come posso eseguire il debug e risolvere questo problema?

risposta

3

Questo sembra essere un bug in gdb. Controlla questa pagina: http://sourceware.org/ml/gdb-patches/2003-01/msg00074.html per ulteriori dettagli. Qual è la versione di gdb che stai utilizzando? prova ad aggiornare alla versione più recente e riprova. L'aggiornamento dovrebbe risolvere il tuo problema.

[Update]

ho trovato anche questo link: http://sourceware.org/ml/gdb/2006-06/msg00123.html

Ecco una soluzione è menzionato. prova a commentare il codice come detto.

if (low == 0 && (bfd_get_file_flags (obfd) & HAS_RELOC) == 0) > return 0; 
+0

Sto usando 6.3.0. Spiacente, non ho capito la tua soluzione alternativa. Dove dovrei metterlo? –

+0

Penso che la parte di aggiornamento non sia rilevante per questo caso particolare. Relativo alla compilazione manuale di gdb. Si prega di ignorarlo. –

+0

L'aggiornamento a 7.1 ha risolto i problemi. Grazie :) –

Problemi correlati