gpt4 book ai didi

c++ - 如何使用 Gdb 调试器从数论库中查找 ZZ 对象的值?

转载 作者:行者123 更新时间:2023-11-30 03:44:42 28 4
gpt4 key购买 nike

我使用 gdb 调试器打印 ZZ 类型变量的值。此数据类型在 Number Theory Library or NTL 中定义.当我使用“print x”找出我的变量的值时,我得到了这样的东西:

print x 
$1 = {rep=0xab2cc54}.

我猜这是我的 ZZ 对象的地址。我怎样才能打印它的值(value)?我应该提一下,我不知道这个类的内部表示。

我可以使用 NTL 和像 Eclipse 这样的编译器来更轻松地调试我的应用程序吗?

最佳答案

… my ZZ object. How can I print its value ?

这有点难看,但有效:

(gdb) call NTL::operator<<(std::ostream&, NTL::ZZ const&)(cerr, x)
42$1 = (std::ostream &) @0x620020: <incomplete type>

(在此示例中,变量 x 的值为 42)。
如果你不想要值后面的垃圾,你可以转换为void:

(gdb) call (void)NTL::operator<<(std::ostream&, NTL::ZZ const&)(cerr, x)
42(gdb)

(但请注意,值之后没有换行符)。

如果你没有使用命名空间标准,你可能需要这样写

(gdb) call NTL::operator<<(std::ostream&, NTL::ZZ const&)('std::cerr', x)

有时 cerr 可能不在范围内:

(gdb) call NTL::operator<<(std::ostream&, NTL::ZZ const&)(cerr, x)        
No symbol "cerr" in current context.

- 然后你可以尝试使用 cout,但它变得更丑陋,因为必须刷新缓冲输出:

(gdb) call NTL::operator<<(std::ostream&, NTL::ZZ const&)(cout, x)
(gdb) call 'std::basic_ostream<char, std::char_traits<char>>& std::operator<< <std::char_traits<char>>(std::basic_ostream<char, std::char_traits<char>>&, char const*)'(&cout, "\n")
42

关于c++ - 如何使用 Gdb 调试器从数论库中查找 ZZ 对象的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35278280/

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