使用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