2015-11-07 10 views
5

Ho appena notato che non riesco a eseguire il debug dei riferimenti con gdb-7.7.1 correttamente.Debugging C++ 11 riferimenti di rvalue con gdb

void simple(int &&i) {} 

Quando entro in questa funzione minimalista non posso ottenere tutte le informazioni significative sulla i. È tipo e valore sono sconosciuto a gdb.

simple(int&&) (i=<unknown type in /tmp/test, CU 0x0, DIE 0xcd78>) at test.cpp:10 
(gdb) p i 
$2 = <unknown type in /tmp/test, CU 0x0, DIE 0xcd78> 

Sto facendo qualcosa di sbagliato? Esistono soluzioni ragionevoli? L'aggiornamento a gdb-7.10 risolverà questo problema ?

+1

Correlati: [ Quali versioni di gdb e gcc consentono di consultare i riferimenti rvalue?] (Http://stackoverflow.com/questions/28965431/which-versions-of-gdb-and-gcc-all ow-watching-rvalue-references) –

+0

@MarkPlotnick che spiega molto, grazie –

+1

Un bug di 3 anni. Wow. –

risposta

2

Purtroppo questo è causato da un bug GDB: 14441 - necessità di sostenere DW_TAG_rvalue_reference_type

Come la risposta collegata da Mark nei commenti Uniti, è un buggdbche non è ancora risolto , quindi l'aggiornamento non aiuterà.

Riferimento:https://sourceware.org/bugzilla/show_bug.cgi?id=14441

Soluzione

Fino a quando non è fissato il valore del i nell'esempio di cui sopra possono essere ottenuti per colata esplicita così:

(gdb) p *(int*)i 
$3 = 69 
+0

In GDB8.0 questo problema è stato risolto. – lz96