我正在尝试调试Android本地应用程序中的段错误。 GDB显示如下:
Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 5200]
0xbfcc6744 in ?? ()
(gdb) bt
#0 0xbfcc6744 in ?? ()
#1 0x5cfb5458 in WWMath::unProject (x=2.1136094475592566, y=472.2994384765625, z=0, mvpMatrix=@0x0,
viewport=@0x0, result=@0x0) at jni/src/core/util/WWMath.cpp:118
#2 0x00000000 in ?? ()
能否获取良好的堆栈?或找到堆栈被破坏的地方?
更新: 提到的函数采用引用:
bool WWMath::unProject(double x, double y, double z, const Matrix &mvpMatrix,
const Rect& viewport, Vec4& result)
同时将简单的本地变量引用作为最后一个参数传递:
Vec4 far, near;
if (!unProject(x, y, 0, tMvp, viewport, near))
-g
和-O0
或者-O1
进行编译? - James M-g -O0
@KerrekSB 我已经开启了所有警告,只有“未使用参数”和有符号/无符号操作。-pedantic
会导致构建崩溃,我们的项目非常庞大,有时代码很混乱。 - Equidamoid