webrtc库core dump

来源:互联网 发布:淘宝铁观音怎么选 编辑:程序博客网 时间:2024/06/08 11:36

上次的文章webrtc视频捕获并通过QT显示提到,使用自己编译的库出现core dump的错误,当时莫名所以,觉得很邪乎。我可是使用外部库。

采用gdb Myproject core 调试,出现了一堆这样的提示:

Program terminated with signal SIGABRT, Aborted.#0  0x00007f165f8b8cc9 in __GI_raise (sig=sig@entry=6)    at ../nptl/sysdeps/unix/sysv/linux/raise.c:5656../nptl/sysdeps/unix/sysv/linux/raise.c: 没有那个文件或目录.
有一种很恶心的感觉,因为总是找不到错误,在gdb之后输入bt,提示:核心已转储(core dump)。

天啊撸,我的代码只有这一行,rtc::PhysicalSocketServer *ss=new rtc::PhysicalSocketServer();

今天找到错误的原因。我编译的库默认是在Debug模式,里面有些对象因为这个参数多一些成员变量。

就是在new 创建内存的时候,与函数库中对象的长度是不一致的,造成栈溢出(个人感觉是这样)。

所以根据[1],要在自己的代码里加上#define NDEBUG

[1]Difference between Debug and Release