我有一个借助 cocos2d-x 引擎实现的 Android 应用程序。我将 protobuf 库链接到项目并尝试 SerializeToStrint() 一个原型对象:
ProtoMessage message;
message.set_app_id(1111);
message.set_hardware_id("test string");
std::string str;
message.SerializeToString(&str);
这很好,但是当我尝试启动应用程序 logcat 时,请给我发送下一个日志:
09-14 10:26:51.748 13009 13009 I DEBUG : Build fingerprint:
verizon/droid2we_vzw/cdma_droid2we:2.3.4/4.5.1_57_D2GA-59/120117:user/release-keys
09-14 10:26:51.748 13009 13009 I DEBUG : pid: 12996, tid: 13008 >>> com.karmicapps <<<
09-14 10:26:51.748 13009 13009 I DEBUG : signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr deadbaad
09-14 10:26:51.748 13009 13009 I DEBUG : r0 00000027 r1 deadbaad r2 a0000000 r3 00000000
09-14 10:26:51.748 13009 13009 I DEBUG : r4 00000001 r5 00000000 r6 81b15340 r7 0000a000
09-14 10:26:51.748 13009 13009 I DEBUG : r8 818d4ed1 r9 44df07c8 10 00100000 fp 00000001
09-14 10:26:51.748 13009 13009 I DEBUG : ip afd466c8 sp 45ac1df8 lr afd19239 pc afd15d08 cpsr 60000070
09-14 10:26:51.748 13009 13009 I DEBUG : d0 643a64696f72646e d1 6472656767756265
09-14 10:26:51.748 13009 13009 I DEBUG : d2 0049002e00690045 d3 0066007200750047
09-14 10:26:51.748 13009 13009 I DEBUG : d4 0000000000000000 d5 0000000100000000
09-14 10:26:51.748 13009 13009 I DEBUG : d6 000000000000f760 d7 0000000000000000
09-14 10:26:51.748 13009 13009 I DEBUG : d8 0000000000000000 d9 0000000000000000
09-14 10:26:51.756 13009 13009 I DEBUG : d10 0000000000000000 d11 0000000000000000
09-14 10:26:51.756 13009 13009 I DEBUG : d12 0000000000000000 d13 0000000000000000
09-14 10:26:51.756 13009 13009 I DEBUG : d14 0000000000000000 d15 0000000000000000
09-14 10:26:51.756 13009 13009 I DEBUG : d16 3fdd938000000280 d17 3fdfffffffffe114
09-14 10:26:51.756 13009 13009 I DEBUG : d18 3fe0000000000000 d19 3fe0000000000f76
09-14 10:26:51.756 13009 13009 I DEBUG : d20 0000000000000000 d21 3f872e5c54a96637
09-14 10:26:51.756 13009 13009 I DEBUG : d22 3e21e7c5992989f4 d23 bda8fae9be8838d4
09-14 10:26:51.756 13009 13009 I DEBUG : d24 3fc74721cad6b0ed d25 3fc39a09d078c69f
09-14 10:26:51.756 13009 13009 I DEBUG : d26 0000000000000000 d27 0000000000000000
09-14 10:26:51.756 13009 13009 I DEBUG : d28 0000000000000000 d29 0000000000000000
09-14 10:26:51.756 13009 13009 I DEBUG : d30 0000000000000000 d31 0000000000000000
09-14 10:26:51.756 13009 13009 I DEBUG : scr 20000012
09-14 10:26:51.756 13009 13009 I DEBUG :
09-14 10:26:51.803 13009 13009 I DEBUG : #00 pc 00015d08 /system/lib/libc.so
09-14 10:26:51.803 13009 13009 I DEBUG : #01 pc 00013674 /system/lib/libc.so
09-14 10:26:51.803 13009 13009 I DEBUG : #02 pc 0001453a /system/lib/libc.so
09-14 10:26:51.803 13009 13009 I DEBUG : #03 pc 000a45ec /data/data/com.example/lib/libprotobuf.so
09-14 10:26:51.803 13009 13009 I DEBUG : #04 pc 000a46d0 /data/data/com.example/lib/libprotobuf.so
09-14 10:26:51.803 13009 13009 I DEBUG : #05 pc 000445ac /data/data/com.example/lib/libprotobuf.so
09-14 10:26:51.803 13009 13009 I DEBUG : #06 pc 000445f6 /data/data/com.example/lib/libprotobuf.so
09-14 10:26:51.803 13009 13009 I DEBUG : #07 pc 00044616 /data/data/com.example/lib/libprotobuf.so
09-14 10:26:51.803 13009 13009 I DEBUG : #08 pc 000d51f8 /data/data/com.example/lib/libpromowall.so
09-14 10:26:51.803 13009 13009 I DEBUG : #09 pc 000d4ee4 /data/data/com.example/lib/libpromowall.so
09-14 10:26:51.803 13009 13009 I DEBUG : #10 pc 0001194c /system/lib/libc.so
09-14 10:26:51.803 13009 13009 I DEBUG : #11 pc 00011510 /system/lib/libc.so
09-14 10:26:51.803 13009 13009 I DEBUG :
09-14 10:26:51.803 13009 13009 I DEBUG : code around pc:
09-14 10:26:51.803 13009 13009 I DEBUG : afd15ce8 2c006824 e028d1fb b13368db c064f8df
09-14 10:26:51.803 13009 13009 I DEBUG : afd15cf8 44fc2401 4000f8cc 49124798 25002027
09-14 10:26:51.803 13009 13009 I DEBUG : afd15d08 f7f57008 2106ec72 edd6f7f6 460aa901
09-14 10:26:51.803 13009 13009 I DEBUG : afd15d18 f04f2006 95015380 95029303 e934f7f6
09-14 10:26:51.803 13009 13009 I DEBUG : afd15d28 462aa905 f7f62002 f7f5e940 2106ec5e
09-14 10:26:51.803 13009 13009 I DEBUG :
09-14 10:26:51.803 13009 13009 I DEBUG : code around lr:
09-14 10:26:51.803 13009 13009 I DEBUG : afd19218 4a0e4b0d e92d447b 589c41f0 26004680
09-14 10:26:51.803 13009 13009 I DEBUG : afd19228 686768a5 f9b5e006 b113300c 47c04628
09-14 10:26:51.803 13009 13009 I DEBUG : afd19238 35544306 37fff117 6824d5f5 d1ef2c00
09-14 10:26:51.811 13009 13009 I DEBUG : afd19248 e8bd4630 bf0081f0 00028344 ffffff88
09-14 10:26:51.811 13009 13009 I DEBUG : afd19258 b086b570 f602fb01 9004460c a804a901
09-14 10:26:51.811 13009 13009 I DEBUG :
09-14 10:26:51.811 13009 13009 I DEBUG : stack:
09-14 10:26:51.811 13009 13009 I DEBUG : 45ac1db8 00000000
09-14 10:26:51.811 13009 13009 I DEBUG : 45ac1dbc 00000000
09-14 10:26:51.811 13009 13009 I DEBUG : 45ac1dc0 00000000
09-14 10:26:51.811 13009 13009 I DEBUG : 45ac1dc4 00000000
09-14 10:26:51.811 13009 13009 I DEBUG : 45ac1dc8 afd4276c
09-14 10:26:51.811 13009 13009 I DEBUG : 45ac1dcc afd42718
09-14 10:26:51.811 13009 13009 I DEBUG : 45ac1dd0 00000000
09-14 10:26:51.811 13009 13009 I DEBUG : 45ac1dd4 afd19239 /system/lib/libc.so
09-14 10:26:51.811 13009 13009 I DEBUG : 45ac1dd8 00000001
09-14 10:26:51.811 13009 13009 I DEBUG : 45ac1ddc 45ac1e0c
09-14 10:26:51.811 13009 13009 I DEBUG : 45ac1de0 81b15340
09-14 10:26:51.811 13009 13009 I DEBUG : 45ac1de4 0000a000
09-14 10:26:51.811 13009 13009 I DEBUG : 45ac1de8 818d4ed1 /data/data/com.karmicapps/lib/libpromowall.so
09-14 10:26:51.811 13009 13009 I DEBUG : 45ac1dec afd1855b /system/lib/libc.so
09-14 10:26:51.811 13009 13009 I DEBUG : 45ac1df0 df002777
09-14 10:26:51.811 13009 13009 I DEBUG : 45ac1df4 e3a070ad
09-14 10:26:51.811 13009 13009 I DEBUG : #00 45ac1df8 0000001b
09-14 10:26:51.811 13009 13009 I DEBUG : 45ac1dfc 0000000e
09-14 10:26:51.811 13009 13009 I DEBUG : 45ac1e00 45ac1eac
09-14 10:26:51.811 13009 13009 I DEBUG : 45ac1e04 002ddb2c
09-14 10:26:51.811 13009 13009 I DEBUG : 45ac1e08 81b15340
09-14 10:26:51.811 13009 13009 I DEBUG : 45ac1e0c fffffbdf
09-14 10:26:51.811 13009 13009 I DEBUG : 45ac1e10 818d4ed1 /data/data/com.karmicapps/lib/libpromowall.so
09-14 10:26:51.811 13009 13009 I DEBUG : 45ac1e14 afd464b0
09-14 10:26:51.811 13009 13009 I DEBUG : 45ac1e18 002ddb2c
09-14 10:26:51.811 13009 13009 I DEBUG : 45ac1e1c afd13679 /system/lib/libc.so
09-14 10:26:51.811 13009 13009 I DEBUG : #01 45ac1e20 45ac1eac
09-14 10:26:51.811 13009 13009 I DEBUG : 45ac1e24 002ddb2c
09-14 10:26:51.811 13009 13009 I DEBUG : 45ac1e28 0000000e
09-14 10:26:51.811 13009 13009 I DEBUG : 45ac1e2c 00000000
09-14 10:26:51.811 13009 13009 I DEBUG : 45ac1e30 818d4ed1 /data/data/com.karmicapps/lib/libpromowall.so
09-14 10:26:51.811 13009 13009 I DEBUG : 45ac1e34 afd1453d /system/lib/libc.so
请问有人能解释一下造成这种情况的原因吗?
更新 但是如果我以这种方式初始化字符串:
ProtoMessage message;
message.set_app_id(1111);
message.set_hardware_id("test string");
std::string str;
str = "test";
message.SerializeToString(&str);
一切正常,proto 序列化正常
更新我在下面添加了一个 add2line 结果
新的堆栈跟踪:
#00 pc 00016f20 /system/lib/libc.so
#01 pc 00014878 /system/lib/libc.so
#02 pc 00015756 /system/lib/libc.so
#03 pc 0018dd64 /data/data/com.example/lib/libprotobuf.so ---- std::string::reserve(unsigned int)
#04 pc 0018de60 /data/data/com.example/lib/libprotobuf.so ---- std::string::append(unsigned int, char)
#05 pc 000eff6c /data/data/com.example/lib/libprotobuf.so ---- google::protobuf::STLStringResizeUninitialized(std::string*, unsigned int)
#06 pc 000f1c96 /data/data/com.example/lib/libprotobuf.so ---- google::protobuf::internal::WireFormatLite::ReadString(google::protobuf::io::CodedInputStream*, std::string*)
#07 pc 001013b4 /data/data/com.example/lib/libpromowall.so ---- google::protobuf::DescriptorBuilder::NewPlaceholderFile(std::string const&)
更新 和最烦人的问题我无法在没有字符串字段初始化的情况下解析原型对象。
//str - serializing protobuf object
RegistrationRequest request;
request.ParseFromString(str);
错误!当我在我的桌面机器上的测试应用程序中编译它时,一切都很好。但是如果我通过 cocos2d-x 脚本 (ndk.r7) 编译应用程序在移动设备上崩溃