C++ gdb libstdc++;从macports(macOS)安装gcc 8的漂亮打印机
我设置了gdb libstdc++漂亮的打印机,如中所述。但漂亮的打印不起作用,gdb一直在打印原始数据 我更改了printers.py以修复它:C++ gdb libstdc++;从macports(macOS)安装gcc 8的漂亮打印机,c++,gcc,gdb,macports,libstdc++,C++,Gcc,Gdb,Macports,Libstdc++,我设置了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 @@ d
--- 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 这是在OSX上,但我自己无法调试,因为我不使用OSX
问题似乎与GCC输出到OSX二进制文件中的调试信息有关。在OS X上,调试信息中显示的类型与漂亮打印机的预期不匹配。“我按照gdb Wiki中的描述设置了gdb libstdc++漂亮打印机。”您具体做了什么?大多数信息都已经过时,在GDB和GCC的现代版本中应该是不必要的,因为打印机已经配备了GCC。我不知道为什么,但是使用
-gdwarf-3
而不是仅仅-g
,whatis$vector
对于双精度向量正确地显示std::vector
而不是vector
。根据,macOS上的-g
默认为-gdwarf-2
。但是我不知道矮人等级如何影响GDB已知的类型。。。