Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我有一个依赖于libuv库(C 代码)的 C++ 代码。由于段错误,它崩溃了。我缩小了问题范围:libuv使用struct statfrom <sys/stat.h>. 如果我在代码中打印此结构的大小:
struct stat
<sys/stat.h>
printf("struct stat size: %d\n", sizeof(struct stat));
它显示 88。如果我在 libuv 库中打印相同的内容,它显示 96。这是段错误的原因。我有点卡在这里。如何找到类型声明的确切位置?还有其他方法可以解决这个问题吗?
您可以使用 预处理源cc -E xxx.c,并在其中查找有问题的定义。预处理中的#fileand指令将指向你的罪魁祸首的大致位置。或者只是在一开始(在库中的任何东西之前),编译器应该尖叫你重新定义;-)#linexxx.i#include <sys/stat.h>struct
cc -E xxx.c
#file
#line
xxx.i
#include <sys/stat.h>
struct