首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何评估GDB中的功能?

如何评估GDB中的功能?
EN

Stack Overflow用户
提问于 2009-08-30 19:42:46
回答 5查看 77.5K关注 0票数 38

我想知道为什么评估函数在gdb中不起作用?在我的源文件中,我包括在gdb中调试时,这些示例是错误的评估。

代码语言:javascript
复制
(gdb) p pow(3,2)

$10 = 1

(gdb) p pow(3,3)

$11 = 1

(gdb) p sqrt(9)

$12 = 0
EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2009-08-30 20:17:03

我的猜测是编译器和链接器对这些特定的函数做了一些神奇的工作。最有可能提高业绩。

如果您绝对需要pow()才能在gdb中使用,那么您可以创建自己的包装函数:

代码语言:javascript
复制
double mypow(double a, double b)
{
    return pow(a,b);
}

也许还会将其封装到一个#ifdef DEBUG或其他什么东西中,以避免最终二进制文件混乱。

顺便说一下,您会注意到可以调用其他库函数(以及它们的返回值),例如:

代码语言:javascript
复制
(gdb) print printf("hello world")
$4 = 11
票数 20
EN

Stack Overflow用户

发布于 2009-08-30 20:03:06

在gdb中调用函数的语法是

代码语言:javascript
复制
call pow(3,2)

类型

代码语言:javascript
复制
help call

在gdb提示符处获取更多信息。

票数 32
EN

Stack Overflow用户

发布于 2012-11-15 13:30:38

您需要告诉gdb,它将在浮点寄存器(而不是普通寄存器)中找到返回值,并为参数提供正确的类型。

即:

(gdb) p((double(*)()pow)(2.,2.)

$1 = 4

票数 31
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1354731

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档