我有一个C ++代码,它依赖于libuv库(C代码)。由于段错误,它崩溃了。我缩小了问题范围:libuv使用struct stat
中的<sys/stat.h>
。如果我在我的代码中打印此结构的大小:
printf("struct stat size: %d\n", sizeof(struct stat));
它显示88.如果我在libuv库中打印它,它显示96.这是segfault的原因。我有点卡在这里。如何找到类型声明的确切位置?还有其他方法可以解决这个问题吗?
答案 0 :(得分:1)
您可以使用cc -E xxx.c
预处理来源,并在那里查找有问题的定义。预处理#file
中的#line
和xxx.i
指令将指向罪魁祸首的大致位置。或者只是#include <sys/stat.h>
一开始(在库中的任何内容之前),编译器应该尖叫你重新定义struct
; - )