一种signal 5 (SIGTRAP), code 1 (TRAP_BRKPT)的原因
Posted 长江很多号
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一种signal 5 (SIGTRAP), code 1 (TRAP_BRKPT)的原因相关的知识,希望对你有一定的参考价值。
1 问题背景
某一次写好代码运行起来,崩溃了。具体如下:
12-27 11:45:13.143 10688 10688 I crash_dump64: performing dump of process 10631 (target tid = 10665)
12-27 11:45:13.145 10688 10688 F DEBUG : *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
12-27 11:45:13.145 10688 10688 F DEBUG : Build fingerprint: 'Xiaomi/sagit/sagit:8.0.0/OPR1.170623.027/V10.2.1.0.OCACNFK:user/release-keys'
12-27 11:45:13.145 10688 10688 F DEBUG : Revision: '0'
12-27 11:45:13.145 10688 10688 F DEBUG : ABI: 'arm64'
12-27 11:45:13.145 10688 10688 F DEBUG : pid: 10631, tid: 10665, name: GLThread 7409 >>> com.chenxf.opengles <<<
12-27 11:45:13.145 10688 10688 F DEBUG : signal 5 (SIGTRAP), code 1 (TRAP_BRKPT), fault addr 0x718ce59eb8
12-27 11:45:13.145 10688 10688 F DEBUG : x0 0000000000000030 x1 000000718a5b0730 x2 0000000000000005 x3 0000000000000003
12-27 11:45:13.145 10688 10688 F DEBUG : x4 003d3d3d3d3d204a x5 0080008000000080 x6 26204f3d44495400 x7 80544944bd4fa026
12-27 11:45:13.145 10688 10688 F DEBUG : x8 484555970ac3469f x9 484555970ac3469f x10 000000718a5b08c0 x11 0000000000000026
12-27 11:45:13.145 10688 10688 F DEBUG : x12 000000000000000b x13 0000000000000001 x14 ffffffffffffffff x15 26204f3d44495400
12-27 11:45:13.145 10688 10688 F DEBUG : x16 00000071a87e7cd0 x17 00000071aa458b1c x18 0000000000000003 x19 00000071987a8400
12-27 11:45:13.145 10688 10688 F DEBUG : x20 000000718ce2a5cc x21 00000071987a8400 x22 000000718a5b156c x23 00000071a8dc0c0f
12-27 11:45:13.145 10688 10688 F DEBUG : x24 0000000000000004 x25 00000071987a8498 x26 0000000000000000 x27 0000000000000000
12-27 11:45:13.145 10688 10688 F DEBUG : x28 0000000000000001 x29 000000718a5b0f40 x30 000000718ce59eb4
12-27 11:45:13.145 10688 10688 F DEBUG : sp 000000718a5b0e20 pc 000000718ce59eb8 pstate 0000000060000000
12-27 11:45:13.147 10688 10688 F DEBUG :
12-27 11:45:13.147 10688 10688 F DEBUG : backtrace:
12-27 11:45:13.147 10688 10688 F DEBUG : #00 pc 0000000000052eb8 /data/app/com.chenxf.opengles-lsgMCmdjPbuhdERQwZJhbg==/base.apk (offset 0x3675000)
12-27 11:45:13.147 10688 10688 F DEBUG : #01 pc 00000000000529cc /data/app/com.chenxf.opengles-lsgMCmdjPbuhdERQwZJhbg==/base.apk (offset 0x3675000)
也没有具体的so堆栈信息,唯一线索,就是
signal 5 (SIGTRAP), code 1 (TRAP_BRKPT)
以及代码的最后执行的日志打印。
抽取代码如下:
void TextSample::Init()
//......省略
initFreetype();
int TextSample::initFreeType()
FT_Library ft;
// All functions return a value different than 0 whenever an error occurred
if (FT_Init_FreeType(&ft))
LOGCATE("ERROR::FREETYPE: Could not init FreeType Library");
return -1;
FT_Face face;
if (FT_New_Face(ft, font_name.c_str(), 0, &face))
LOGCATE("ERROR::FREETYPE: Failed to load fonts");
return -1;
else
//......省略
// destroy FreeType once we're finished
FT_Done_Face(face);
FT_Done_FreeType(ft);
DEBUG_LOGCATE("initFreeType done ");
日志最后打印了initFreeType done
2 原因和解决办法
一开始以为,initFreeType done
都打印了,跟这个函数没关系,其实,有很大的关系。
SIGTRAP
的错误,指的是函数没有返回值!
所以写C++代码,要小心,虽然没返回值能编译过,但是最终会运行崩溃。
解决办法就是,如果一个函数定义了有返回值,那要保证各种case下,都能有返回值,即都有return
。
以上是关于一种signal 5 (SIGTRAP), code 1 (TRAP_BRKPT)的原因的主要内容,如果未能解决你的问题,请参考以下文章
一种signal 5 (SIGTRAP), code 1 (TRAP_BRKPT)的原因
我的C/C++语言学习进阶之旅NDK开发之解决错误:signal 5 (SIGTRAP), code 1 (TRAP_BRKPT), fault addr 0xXXX
我的C/C++语言学习进阶之旅NDK开发之解决错误:signal 5 (SIGTRAP), code 1 (TRAP_BRKPT), fault addr 0xXXX