当我用gdb进行调试时,我只想用'(gdb)p x'来打印x的值,但结果很复杂.终端命令是这样的:(gdb) p word
输出量:
$2 = {<std::__1::__basic_string_common<true>> = {<No data fields>}, static __short_mask = 1,
static __long_mask = 1,
__r_ = {<std::__1::__compressed_pair_elem<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::__rep, 0, false>> = {__value_ = {{__l = {__cap_ = 1970239750,
__size_ = 0, __data_ = 0x0}, __s = {{__size_ = 6 '\006', __lx = 6 '\006'},
__data_ = "you", '\000' <repeats 19 times>}, __r = {__words = {1970239750, 0,
0}}}}}, <std::__1::__compressed_pair_elem<std::__1::allocator<char>, 1, true>> = {<std::__1::allocator<char>> = {<No data fields>}, <No data fields>}, <No data fields>},
static npos = 18446744073709551615}
我真正想要的是__data_ = "you"
这一段而已。
如何获得这样的简单结果:
$2 = "you"
有人能帮我吗?非常感谢。
1条答案
按热度按时间hgc7kmma1#
怎样才能得到这样一个简单的结果:
这就是广发精品打印机的作用。
看起来您使用的是
libc++
(可能还有Clang)。来自
libc++
文档:默认情况下,GDB不支持libc符号的美化打印。但是,libc本身提供了美化打印机。这些打印机可以用作:
您可以将
source <libcxx>/utils/gdb/libcxx/printers.py
和python register_libcxx_printer_loader()
命令放到~/.gdbinit
中,这样就可以正常工作了。