(gdb) call malloc(5*1024*1024)
$1 = -1223639024
似乎gdb不知道malloc将返回什么类型,因此它假定为int。我不知道为什么有人可以解释会很好。
在C代码中,我可以这样做:
void* (*malloc1)(long)=malloc;
然后调用malloc1
而不是malloc
。但是我不知道如何在gdb中定义这样的指针。
现在我的问题是,如何定义函数指针来解决此问题?
答案 0 :(得分:4)
您需要使用调试信息进行编译(对于GCC,请使用-g
)。为C库安装调试信息(在许多系统上的软件包libc6-dbg
或glibc-debuginfo
中)也有帮助。
您还可以将malloc
转换为正确类型的函数指针,如下所示:
(gdb) print ((void * (*) (size_t)) malloc) (5 * 1024 * 1024)
$1 = (void *) 0x7ffff65b2010