使用gcc-4.8和mac os 10.9的GDB 7.6 STL漂亮打印

时间:2014-03-17 08:40:57

标签: macos gcc stl gdb pretty-print

我正努力在我的mac上工作的gdb中按照here所述获得漂亮的打印件。我通过macports并使用gcc-4.8下载了最新的gdb。 我加载了~/.gdbinit文件并且打印机已注册,但每当我打电话时 print myVector它给了我原始输出。 有什么建议我可以做什么?非常感谢你们!

3 个答案:

答案 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容器
  • 切换到使用GNU libstdc++gdb中的STL漂亮打印应该可以正常工作。
  • STL漂亮的打印机是作为Python程序实现的,它们了解STL容器的实现细节,并与STL实现一起维护。
  • libc++不会发送确认GDB Python pretty printer API
  • 的STL漂亮打印机

由于您从MacPorts获得了gcc-4.8,并且gcc-*声明libstdc++默认为-stdlib=,因此您应该避免在使用gcc时传递{{1}}选项。