oo_*_*uel 10 gdb rvalue-reference c++11
我只是注意到我无法正确调试rvalue引用gdb-7.7.1.
void simple(int &&i) {}
Run Code Online (Sandbox Code Playgroud)
当我输入这个简约函数时,我无法获得任何有意义的信息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>
Run Code Online (Sandbox Code Playgroud)
难道我做错了什么?有没有明智的解决方法?升级是否会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
Run Code Online (Sandbox Code Playgroud)