2015-11-07 13 views
5

Właśnie zauważyłem, że nie mogę poprawnie debugować rvalue z gdb-7.7.1.Debugowanie odwołań rvalue w C++ 11 z gdb

void simple(int &&i) {} 

Kiedy wprowadzić ten minimalistyczny funkcji nie mogę uzyskać żadnych istotnych informacji o i. To jest typ i wartośćnieznany na 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> 

Czy robię coś nie tak? Czy istnieją jakieś sensowne rozwiązania? Czy uaktualnienie do gdb-7.10 rozwiąże ten problem ?

+1

Podobne [ Które wersje gdb i gcc umożliwiają oglądanie odniesień rvalue?] (Http://stackoverflow.com/questions/28965431/which-versions-of-gdb-and-gcc-all ow-watching-rvalue-references) –

+0

@MarkPlotnick, który dużo wyjaśnia, dzięki –

+1

Trzyletni błąd. Łał. –

Odpowiedz

2

Niestety jest to spowodowane przez GDB Bug: 14441 - potrzebę wspierania DW_TAG_rvalue_reference_type

jako odpowiedź połączonego przez Marka w stanach komentarze, to gdbbug, który nie jest jeszcze ustalona , więc uaktualnienie nie pomoże.

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

Rozwiązanie

Dopóki nie jest stała wartość i w powyższym przykładzie można otrzymać poprzez wyraźne odlewania tak:

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

W GDB8.0 zostało to naprawione. – lz96