gpt4 book ai didi

function - 如何在没有痛苦的类型转换的情况下评估 GDB 中的函数?

转载 作者:行者123 更新时间:2023-12-04 10:21:15 25 4
gpt4 key购买 nike

an answer to How to evaluate functions in GDB?我找到了在我的程序之外调用一个名为 floor 的函数的方法。从 GDB 内部是这样的:

(gdb) p floor
$20 = {<text variable, no debug info>} 0x38e10197b0 <floor>
(gdb) p ((double(*)(double))floor)(2.9999)
$21 = 2
(gdb) p ((double(*)(double))floor)(2.000001)
$22 = 2
(gdb)

我需要做什么, 编译器升级是 不是 目前我的一个选项,以便我以与在原始 C/C++ 文本文件中相同的方式调用该函数,例如:
p floor(2.9999)

具体来说,我想 不是 必须打开 floor 上的手册页找到函数签名:
double floor(double x);

然后构造一个表达式来提供给 gdb 的 print命令是一个带 double 的指针返回 double , 有很多括号。

那么,这是 我们在 GDB 中调用这些类型的低级函数的唯一方法?或者有什么我想念的吗?是因为我根本没有加载某种类型的“调试符号”或类似的东西吗?引用 no debug info在上面的输出中,让我相信也许我的机器缺少一些用于“调试符号”的包或允许我在 native C 或 C++ 中表达它的等价物?

这是专门针对 Linux 的。我对与平台无关的答案不感兴趣,因为它们与我的用例无关(但一般而言,仅针对此问题)。

最佳答案

What do I need to do



您应该安装 libc6-dbg或类似的 libc 调试符号包( floorlibm 中,它是 GLIBC 的一部分)。

没有调试符号,GDB 不知道 floor 的类型是什么是。

关于function - 如何在没有痛苦的类型转换的情况下评估 GDB 中的函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60839314/

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