gpt4 book ai didi

c++ - mac pretty-print gdb

转载 作者:行者123 更新时间:2023-12-01 14:58:56 25 4
gpt4 key购买 nike

我在macOS High Sierra 10.13.6上,无法将gdb转换为 pretty-print 容器或字符串。我按照这里GDB 7.6 STL pretty print with gcc-4.8 and mac os 10.9的说明进行操作,克隆了gdb pretty-print ,并将路径添加到.gdbinit。但是gdb仍然不会打印出来。我在启动gdb之后添加了 pretty-print ,以确保它们已注册

(gdb) python
>import sys
>sys.path.insert(0, '/Users/liamadams/Documents/gdb/python')
>from libstdcxx.v6.printers import register_libstdcxx_printers
>register_libstdcxx_printers (None)
>end
Traceback (most recent call last):
File "<string>", line 4, in <module>
File "/Users/liamadams/Documents/gdb/python/libstdcxx/v6/printers.py", line 1739, in register_libstdcxx_printers
gdb.printing.register_pretty_printer(obj, libstdcxx_printer)
File "/usr/local/Cellar/gdb/8.0.1/share/gdb/python/gdb/printing.py", line 152, in register_pretty_printer
printer.name)
RuntimeError: pretty-printer already registered: libstdc++-v6

gdb正在注册 pretty-print ,我正在运行gcc 8.2.0和gdb 8.0.1。注册的 pretty-print 是c++-v6,应该是v8吗?我克隆了这个仓库来获得 pretty-print svn://gcc.gnu.org/svn/gcc/trunk/libstdc++-v3/python
我使用 /usr/local/Cellar/gcc/8.2.0/bin/g++-8 -static-libstdc++ -g -o a.out b.o c.o -pthread构建了代码

这是尝试打印字符串时的gdb输出
(gdb) p currentItem
$1 = {static npos = <optimized out>,
_M_dataplus = {<allocator<char>> = {<new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0x7ffeefbff900 "mining"}, _M_string_length = 6, {
_M_local_buf = "mining\000\000\v\000\000\000\000\000\000",
_M_allocated_capacity = 113723912907117}}

(gdb) whatis currentItem
type = string

最佳答案

这似乎是一个错误。此堆栈溢出问题中提供了一个黑客解决方案:
Bug in gdb libstdc++ pretty-printers with gcc 8 installed from macports (macOS)
从该问题复制,您需要修改 pretty-print 代码:

--- 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.

关于c++ - mac pretty-print gdb,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54394057/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com