使用gdb调试C ++ 11右值引用

我只注意到我无法正确调试gdb-7.7.1 rvalue引用。

void simple(int &&i) {}

当我输入这个简约功能时,我无法获得任何关于i有意义的信息。 它的类型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>

难道我做错了什么? 有没有什么明智的解决方法? 升级到gdb-7.10解决这个问题吗?


不幸的是,这是由GDB Bug引起的:14441 - 需要支持DW_TAG_rvalue_reference_type

在GDB 8.0中得到了修复

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

解决方法

直到它被修复,上面例子中的i的值可以通过像这样的明确的转换来获得:

(gdb) p *(int*)i 
$3 = 69
链接地址: http://www.djcxy.com/p/88811.html

上一篇: Debugging C++11 rvalue references with gdb

下一篇: Unpacking nested tuples in C++