在gdb中调用malloc时为负数

时间:2019-03-06 06:52:22

标签: linux pointers gdb

(gdb) call malloc(5*1024*1024)
$1 = -1223639024

似乎gdb不知道malloc将返回什么类型,因此它假定为int。我不知道为什么有人可以解释会很好。

在C代码中,我可以这样做:

void* (*malloc1)(long)=malloc;

然后调用malloc1而不是malloc。但是我不知道如何在gdb中定义这样的指针。

现在我的问题是,如何定义函数指针来解决此问题?

1 个答案:

答案 0 :(得分:4)

您需要使用调试信息进行编译(对于GCC,请使用-g)。为C库安装调试信息(在许多系统上的软件包libc6-dbgglibc-debuginfo中)也有帮助。

您还可以将malloc转换为正确类型的函数指针,如下所示:

(gdb) print ((void * (*) (size_t)) malloc) (5 * 1024 * 1024)
$1 = (void *) 0x7ffff65b2010