繁体   English   中英

CUDA-GDB使用int格式打印内存内容,即使该内容应为浮点型

[英]CUDA-GDB prints memory content using int format even though it should be float

在CUDA C项目中,我有一个指针浮在一个称为“ p”的结构内。 它是指向设备内存的指针,称为“ p-> deviceOutput”。 我正在使用CUDA-GDB在执行过程中检查此指针的内容:当我尝试打印它时,会发生以下情况:

(gdb) p *p->deviceOutput
$1 = 0

如您所见,打印返回的内容看起来像是int,绝对不是浮点数。 我确实可以确定指针是浮动指针,所以我对此行为感到困惑。 指定浮点格式无济于事:

(gdb) p/f *p->deviceOutput
$2 = 0

实际上,我也使用GDB获得相同的行为。 我正在使用Ubuntu 14.10,并且我的代码是使用-O0和-g选项通过nvcc编译的。

任何人都可以解释发生了什么,如何正确检查此内存位置? 谢谢

打印浮点值时,gdb使用g格式说明符(内部)打印g 这是printf手册页g的描述的有趣部分:

尾随零从结果的分数部分中删除; 只有在小数点后跟至少一位数字时,小数点才会出现。

因此,由于浮点值为0,因此得到0,并且g格式说明符(由gdb使用)将打印精确的0,不带小数点或任何尾随的0。

您可以使用ptype命令检查变量是否为float类型,如下所示:

(gdb) ptype p->deviceOutput

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM