首页 > 解决方案 > 从 macports (macOS) 安装 gcc 8 的 gdb libstdc++ 漂亮打印机中的错误

问题描述

我按照GDB Wiki中的描述设置了 gdb libstdc++ 漂亮打印机。但是漂亮的打印不起作用,gdb 一直在打印原始数据。

我更改了printers.py来修复它:

--- python/libstdcxx/v6/printers.py.old 2018-10-13 13:57:11.000000000 +0300
+++ python/libstdcxx/v6/printers.py 2018-10-13 14:35:55.000000000 +0300
@@ -1306,2 +1306,4 @@
     def add(self, name, function):
+        if (name.startswith('std::')):
+            self.add(name[5:], function)
         # A small sanity check.

该补丁使打印机能够平等地处理 std::xxx 和 xxx(例如 std::vector 和 vector)。补丁有帮助!

为什么有帮助?错误在哪里?使用通过 macports 安装的 gdb 8.0.1、gcc 8.2.0。

标签: c++gccgdbmacportslibstdc++

解决方案


这是OS X 上的一个已知问题,但我无法自己调试它,因为我不使用 OS X。

该问题似乎与 GCC 输出到 OS X 二进制文件的调试信息有关。在 OS X 上,调试信息中显示的类型与漂亮的打印机所期望的不匹配。


推荐阅读