Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/147.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ gdb libstdc++;从macports(macOS)安装gcc 8的漂亮打印机_C++_Gcc_Gdb_Macports_Libstdc++ - Fatal编程技术网

C++ gdb libstdc++;从macports(macOS)安装gcc 8的漂亮打印机

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

我设置了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

这是在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已知的类型。。。