我正努力在我的mac上工作的gdb中按照here所述获得漂亮的打印件。我通过macports并使用gcc-4.8
下载了最新的gdb。
我加载了~/.gdbinit
文件并且打印机已注册,但每当我打电话时
print myVector
它给了我原始输出。
有什么建议我可以做什么?非常感谢你们!
答案 0 :(得分:3)
使用libc ++(Clang ++ / LLVM中使用的新库)使用漂亮的打印机使用这个新的漂亮的打印机:
https://github.com/koutheir/libcxx-pretty-printers
.gdbinit几乎相同(see sample)
我刚刚在OS X 10.10上尝试使用Eclipse Luna,它可以正常工作。
答案 1 :(得分:1)
我可以做什么建议?
您可以尝试直接从gdb命令行注册漂亮的打印机,绕过.gdbinit
文件来缩小问题范围:
ks@ks-comp:~$ gdb -n
GNU gdb (GDB) 7.6.1-ubuntu
Copyright (C) 2013 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law. Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-linux-gnu".
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>.
(gdb) python
>import sys
>sys.path.insert(0, '/home/ks/stlPrettyPrinter')
>from libstdcxx.v6.printers import register_libstdcxx_printers
>register_libstdcxx_printers (None)
>end
(gdb)
请注意,我已经检查了/home/ks/stlPrettyPrinter
文件夹中的漂亮打印机:
ks@ks-comp:~$ ls -a /home/ks/stlPrettyPrinter
. .. hook.in index.html libstdcxx Makefile.am Makefile.in patch.txt .svn
ks@ks-comp:~$
答案 2 :(得分:0)
libc++
中使用STL实现(默认为clang
),GDB将不知道如何打印STL容器libstdc++
,gdb
中的STL漂亮打印应该可以正常工作。libc++
不会发送确认GDB Python pretty printer API 由于您从MacPorts获得了gcc-4.8
,并且gcc-*
声明libstdc++
默认为-stdlib=
,因此您应该避免在使用gcc时传递{{1}}选项。