iqiyi / xcrash Goto Github PK
View Code? Open in Web Editor NEW🔥 xCrash provides the Android app with the ability to capture java crash, native crash and ANR. No root permission or any system permissions are required.
License: Other
🔥 xCrash provides the Android app with the ability to capture java crash, native crash and ANR. No root permission or any system permissions are required.
License: Other
因为目前团队采用acra+breakpad方案,对于java部分的崩溃,现有方案基本没什么问题;但对于native崩溃,目前效果还不是很好,从dmp文件解析出的内容,大多是系统相关信息,业务堆栈有限。所以想优化下native部分。App中RN页面较多
目前native的堆栈类似,较多系统so,大部分出现在RN页面
libc.so NativeException: Operating system: Android
0.0.0 Linux 4.4.21-perf+ #1 SMP PREEMPT Wed Sep 12 23:34:33 CST 2018 armv8l
CPU: arm
ARMv1 Qualcomm part(0x51008010) features: half,thumb,fastmult,vfpv2,edsp,neon,vfpv3,tls,vfpv4,idiva,idivt
8 CPUs
GPU: UNKNOWN
Crash reason: SIGABRT
Crash address: 0x3fe1
Process uptime: not available
Thread 21 (crashed)
0 libc.so + 0x4a988
r0 = 0x00000000 r1 = 0x00004017 r2 = 0x00000006 r3 = 0x00000008
r4 = 0xd2eeb978 r5 = 0x00000006 r6 = 0xd2eeb920 r7 = 0x0000010c
r8 = 0xb8289080 r9 = 0x00000000 r10 = 0xf26600f8 r12 = 0x0000000c
fp = 0xf26600fc sp = 0xd2eeaf30 lr = 0xf531d06f pc = 0xf531f988
Found by: given as instruction pointer in context
1 libc.so + 0x1dacf
sp = 0xd2eeaf48 pc = 0xf52f2ad1
Found by: stack scanning
2 libc.so + 0x194c7
sp = 0xd2eeaf50 pc = 0xf52ee4c9
Found by: stack scanning
3 libhwui.so + 0x745cd
sp = 0xd2eeaf5c pc = 0xf5c985cf
Found by: stack scanning
4 libhwui.so + 0x745cd
sp = 0xd2eeaf6c pc = 0xf5c985cf
Found by: stack scanning
5 libc.so + 0x17522
sp = 0xd2eeaf78 pc = 0xf52ec524
3Found by: stack scanning
...
刚接触xCrash,想咨询下,对于上述的这种情况,集成xcrash会有提升么? 另外,xcrash是否支持单独集成native crash信息采集的部分呢? 感谢~
我发现有个空指针异常没有捕获 其他情况可以捕获.
ClassFoo *foo = nullptr;
foo->testFunc();
第二行crash的时候 无法捕获
例如:signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0x0这样的问题
主进程捕获anr是正常的,子进程捕获不到,不会调用callback。
如果需要提供其他信息,麻烦列举一下。
自己造成异常抓取好像在手机文件里面看不到错误日志啊,是不是操作有误呢?参照文档来的
As we know, Android11 has been released several weeks ago, so I want to know can it(xCrash
) work in Android11?
4.x的机型是OK的 会走callback
5.x以上(我用的是8.0)不走callback anr时locat打出来日志
/xcrash.sample I/zygote64: Thread[3,tid=6022,WaitingInMainSignalCatcherLoop,Thread*=0x707d45ca00,peer=0x16702970,"Signal Catcher"]: reacting to signal 3
/xcrash.sample I/zygote64: Wrote stack traces to '/data/anr/traces.txt'
我这里加了混淆,修改了一下测试用例testJavaCrash,但发现混淆后堆栈的代码行号不对。如下:
crash:trace
...
Caused by: java.lang.RuntimeException: test java exception
at a.l.a(XCrash.java:44)
at xcrash.sample.MainActivity.testJavaCrashInMainThread_onClick(MainActivity.java:1)
at java.lang.reflect.Method.invoke(Native Method)
at androidx.appcompat.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:3)
...
使用xcrash后,貌似和umeng的crash统计有冲突,猜测是两者使用的signaction handler覆盖了?
xcrash_sample 在系统5.0以上的设备 没有走ICrashCallback回调 麻烦帮忙看下
log下是显示
xcrash.sample Thread[3,tid=6022,WaitingInMainSignalCatcherLoop,Thread*=0x707d45ca00,peer=0x16702970,"Signal Catcher"]: reacting to signal 3
/xcrash.sample I/zygote64: Wrote stack traces to '/data/anr/traces.txt'
4.x是正常的
最近在处理设备异常捕获时,由于ROM经过定制,发现如果快速发生两个以上未捕获异常,会导致XCrash无法捕获,或是刚进入void onCrash(String logPath, String emergency)
方法,会自动中断执行,导致后续杀死进程和重启应用的代码不会执行,请问是否有机制可以将异常按队列方式进行处理,万望回复,十分感谢!!!
setJavaRethrow(false) 使用无效
Have conflict with setDefaultUncaughtExceptionHandler() ?
非常感谢贵厂的库。
使用中遇到个问题:开启ANR功能后,普通的卡顿也会上传, 主线程被短暂卡顿也会上传一个anr日志,导致线上传回的日志非常多。
有没有接口可以调整这个卡顿检测的时间阈值 ?
如果crash文件创建或者写失败(不给写存储卡的权限), 此时java crash的callback也不会走,native crash的callback会走
我看Tencent Bugly里面会对其他信号处理进行兼容:
static void my_handler(const int code, siginfo_t *const si, void *const sc) {
...
/* Call previous handler. */
old_handler.sa_sigaction(code, si, sc);
}
参考他们的文章:https://zhuanlan.zhihu.com/p/27834417
某些信号可能在之前已经被安装过信号处理函数,而sigaction一个信号量只能注册一个处理函数,这意味着我们的处理函数会覆盖其他人的处理信号
保存旧的处理函数,在处理完我们的信号处理函数后,在重新运行老的处理函数就能完成兼容。
所以在xcd_core_signal_handler里是否需要回调旧的信号处理函数呢?
接入之后,发现发生ANR时,不能及时捕获的traces信息,要等到第二次ANR时才能捕获到,有什么因素会干扰XCrash捕获ANR呢,在demo中接入时可以及时捕获到
因为android.mk不熟,我把项目转成了cmake,但是编译的时候包如下错误。
libxcrash_dumper/lzma/./Threads.h:18:9: error: unknown type name 'HANDLE'
typedef HANDLE CThread;
^
说HANDLE找不到,搜索确实没有,不知道为什么。我下载lzma的代码也不行。
macos
as3.4.1
ndk最新的
我发现集成好之后,在指定目录下输出的内容是可读的文本格式,那么dump是用来做什么的呀,是用来压缩加密的吗?还是
发现xCrash 在处理ANR时,调用art 的 DumpForSigQuit 有比较大的crash 概率,下面是一个比较常见的crash backtrace. 而且绝大部分是发生在anroid 9上,art在dump java stack时发生循环abort了
backtrace <<<
#00 pc 0001d796 /system/lib/libc.so (abort+57)
#1 pc 0037160b /system/lib/libart.so (_ZN3art7Runtime5AbortEPKc+950)
#2 pc 0000720b /system/lib/libbase.so (_ZN7android4base10LogMessageD2Ev+578)
#3 pc 003c526b /system/lib/libart.so (_ZN3art8verifier14MethodVerifier20GetMethodIdxOfInvokeEPKNS_11InstructionE+210)
#4 pc 003c3f01 /system/lib/libart.so (_ZN3art8verifier14MethodVerifier20VerifyInvocationArgsEPKNS_11InstructionENS0_10MethodTypeEb+28)
#5 pc 003bd1bf /system/lib/libart.so (_ZN3art8verifier14MethodVerifier25CodeFlowVerifyInstructionEPj+5486)
#6 pc 003bb9bf /system/lib/libart.so (_ZN3art8verifier14MethodVerifier20CodeFlowVerifyMethodEv+214)
#7 pc 003ba3c9 /system/lib/libart.so (_ZN3art8verifier14MethodVerifier14VerifyCodeFlowEv+576)
#8 pc 003b887b /system/lib/libart.so (_ZN3art8verifier14MethodVerifier6VerifyEv+5798)
#9 pc 003b9bb9 /system/lib/libart.so (_ZN3art8verifier14MethodVerifier16FindLocksAtDexPcEv+88)
#10 pc 003b9af7 /system/lib/libart.so (_ZN3art8verifier14MethodVerifier16FindLocksAtDexPcEPNS_9ArtMethodEjPNSt3__16vectorINS1_11DexLockInfoENS4_9allocatorIS6_EEEE+378)
#11 pc 002ebe85 /system/lib/libart.so (_ZN3art7Monitor10VisitLocksEPNS_12StackVisitorEPFvPNS_6mirror6ObjectEPvES6_b+296)
#12 pc 003a0a7f /system/lib/libart.so (_ZN3art26MonitorObjectsStackVisitor10VisitFrameEv+98)
#13 pc 00385c23 /system/lib/libart.so (_ZN3art12StackVisitor9WalkStackILNS0_16CountTransitionsE0EEEvb+506)
#14 pc 0039715f /system/lib/libart.so (_ZNK3art6Thread13DumpJavaStackERNSt3__113basic_ostreamIcNS1_11char_traitsIcEEEEbb+222)
#15 pc 00393bdf /system/lib/libart.so (_ZNK3art6Thread9DumpStackERNSt3__113basic_ostreamIcNS1_11char_traitsIcEEEEbP12BacktraceMapb+226)
#16 pc 003901af /system/lib/libart.so (_ZNK3art6Thread4DumpERNSt3__113basic_ostreamIcNS1_11char_traitsIcEEEEbP12BacktraceMapb+34)
#17 pc 003a9a77 /system/lib/libart.so (_ZN3art14DumpCheckpoint3RunEPNS_6ThreadE+654)
#18 pc 003a3ed9 /system/lib/libart.so (ZN3art10ThreadList13RunCheckpointEPNS_7ClosureES2+1152)
#19 pc 003a30d1 /system/lib/libart.so (_ZN3art10ThreadList4DumpERNSt3__113basic_ostreamIcNS1_11char_traitsIcEEEEb+384)
#20 pc 003713af /system/lib/libart.so (_ZN3art7Runtime5AbortEPKc+346)
#21 pc 0000720b /system/lib/libbase.so (_ZN7android4base10LogMessageD2Ev+578)
#22 pc 003c526b /system/lib/libart.so (_ZN3art8verifier14MethodVerifier20GetMethodIdxOfInvokeEPKNS_11InstructionE+210)
#23 pc 003c3f01 /system/lib/libart.so (_ZN3art8verifier14MethodVerifier20VerifyInvocationArgsEPKNS_11InstructionENS0_10MethodTypeEb+28)
#24 pc 003bd1bf /system/lib/libart.so (_ZN3art8verifier14MethodVerifier25CodeFlowVerifyInstructionEPj+5486)
#25 pc 003bb9bf /system/lib/libart.so (_ZN3art8verifier14MethodVerifier20CodeFlowVerifyMethodEv+214)
#26 pc 003ba3c9 /system/lib/libart.so (_ZN3art8verifier14MethodVerifier14VerifyCodeFlowEv+576)
#27 pc 003b887b /system/lib/libart.so (_ZN3art8verifier14MethodVerifier6VerifyEv+5798)
#28 pc 003b9bb9 /system/lib/libart.so (_ZN3art8verifier14MethodVerifier16FindLocksAtDexPcEv+88)
#29 pc 003b9af7 /system/lib/libart.so (_ZN3art8verifier14MethodVerifier16FindLocksAtDexPcEPNS_9ArtMethodEjPNSt3__16vectorINS1_11DexLockInfoENS4_9allocatorIS6_EEEE+378)
#30 pc 002ebe85 /system/lib/libart.so (_ZN3art7Monitor10VisitLocksEPNS_12StackVisitorEPFvPNS_6mirror6ObjectEPvES6_b+296)
#31 pc 003a0a7f /system/lib/libart.so (_ZN3art26MonitorObjectsStackVisitor10VisitFrameEv+98)
#32 pc 00385c23 /system/lib/libart.so (_ZN3art12StackVisitor9WalkStackILNS0_16CountTransitionsE0EEEvb+506)
#33 pc 0039715f /system/lib/libart.so (_ZNK3art6Thread13DumpJavaStackERNSt3__113basic_ostreamIcNS1_11char_traitsIcEEEEbb+222)
#34 pc 00393bdf /system/lib/libart.so (_ZNK3art6Thread9DumpStackERNSt3__113basic_ostreamIcNS1_11char_traitsIcEEEEbP12BacktraceMapb+226)
#35 pc 003901af /system/lib/libart.so (_ZNK3art6Thread4DumpERNSt3__113basic_ostreamIcNS1_11char_traitsIcEEEEbP12BacktraceMapb+34)
#36 pc 003a9a77 /system/lib/libart.so (_ZN3art14DumpCheckpoint3RunEPNS_6ThreadE+654)
#37 pc 003a3ed9 /system/lib/libart.so (ZN3art10ThreadList13RunCheckpointEPNS_7ClosureES2+1152)
#38 pc 003a3269 /system/lib/libart.so (_ZN3art10ThreadList4DumpERNSt3__113basic_ostreamIcNS1_11char_traitsIcEEEEb+792)
#39 pc 003a2e7b /system/lib/libart.so (_ZN3art10ThreadList14DumpForSigQuitERNSt3__113basic_ostreamIcNS1_11char_traitsIcEEEE+650)
#40 pc 0037bdb9 /system/lib/libart.so (_ZN3art7Runtime14DumpForSigQuitERNSt3__113basic_ostreamIcNS1_11char_traitsIcEEEE+120)
#41 pc 000054d3 /data/app/com.xxx.yyy-cqz0wiwhy9CKKL7O9TNArg==/lib/arm/libxcrash.so
#42 pc 00065ac7 /system/lib/libc.so (_ZL15__pthread_startPv+22)
#43 pc 0001e9ad /system/lib/libc.so (__start_thread+32)
请教下你们服务端是用什么分析捕获的日志文件呢?是自己写的还是用的一些开源的项目?
谢谢!
编译环境mac, ndk/android-ndk-r10e
localhost:~ shx$ ndk-build --version
GNU Make 3.81
Copyright (C) 2006 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE.
localhost:native shx$ ./build.sh
make: Entering directory /Users/didi/Downloads/xCrash-master/src/native/libxcrash/jni' [armeabi] Compile thumb : xcrash <= xc_jni.c arm-linux-androideabi-gcc: error: unrecognized command line option '-Weverything' make: *** [/Users/didi/Downloads/xCrash-master/src/native/libxcrash/obj/local/armeabi/objs/xcrash/xc_jni.o] Error 1 make: Leaving directory
/Users/didi/Downloads/xCrash-master/src/native/libxcrash/jni'
make: Entering directory /Users/didi/Downloads/xCrash-master/src/native/libxcrash_dumper/jni' [armeabi] Compile thumb : xcrash_dumper <= xcd_arm_exidx.c arm-linux-androideabi-gcc: error: unrecognized command line option '-Weverything' make: *** [/Users/didi/Downloads/xCrash-master/src/native/libxcrash_dumper/obj/local/armeabi/objs/xcrash_dumper//Users/didi/Downloads/xCrash-master/src/native/libxcrash_dumper/jni/xcd_arm_exidx.o] Error 1 make: Leaving directory
/Users/didi/Downloads/xCrash-master/src/native/libxcrash_dumper/jni'
localhost:native didi$ cat build.sh
#!/bin/bash
localhost:shx$ whereis ndk-build shx$ whereis ndk-build
localhost:
07-08 19:29:30.999 22781-22781/? E/xcrash_dumper: THREAD: ptrace GETREGS failed, errno=16
07-08 19:29:31.001 22781-22781/? E/xcrash_dumper: THREAD: ptrace GETREGS failed, errno=16
07-08 19:29:31.004 22781-22781/? E/xcrash_dumper: THREAD: ptrace GETREGS failed, errno=16
07-08 19:29:31.006 22781-22781/? E/xcrash_dumper: THREAD: ptrace GETREGS failed, errno=16
linux :
执行 sh install.sh
报错如下:
awk: warning: escape sequence \'' treated as plain
''
将 "'" 修改为 "'" 执行通过
如果不使用dumper,直接通过xc_fallback_get_emergency 会有什么区别么?
xc_fallback_get_emergency会有数据不全,或者信息不全的问题么?
dump status:
child terminated normally with non-zero exit status(102)
Start time: '2020-10-28T00:52:16.530-0300'
Crash time: '2020-10-28T02:47:40.345-0300'
App ID: 'com..'
App version: '7.5.74'
Rooted: 'No'
API level: '29'
OS version: '10'
Kernel version: 'Linux version 4.9.206-perf+ #1 SMP PREEMPT Wed Sep 30 23:50:55 CDT 2020 (aarch64)'
ABI list: 'arm64-v8a,armeabi-v7a,armeabi'
Manufacturer: 'motorola'
Brand: 'motorola'
Model: 'moto g(7) power'
Build fingerprint: 'motorola/ocean_t/ocean_t:10/QPOS30.52-29-9/0c526b:user/release-keys'
ABI: 'arm64'
pid: 32393, tid: 32418, name: xcrash_trace_dp >>> com.. <<<
signal 6 (SIGABRT), code -6 (SI_TKILL), fault addr --------
x0 0000000000000000 x1 0000000000007ea2 x2 0000000000000006 x3 00000070c0e62080
x4 00000070a53147c0 x5 00000070a53147c0 x6 00000070a53147c0 x7 00000070c1ea9240
x8 00000000000000f0 x9 900c3b2804db1c32 x10 0000000000000001 x11 0000000000000000
x12 fffffff0fffffbdf x13 000000711b97d740 x14 0000000000000001 x15 404511a01c84f6c1
x16 00000071af4f38c0 x17 00000071af4d1020 x18 00000070c0172000 x19 0000000000007e89
x20 0000000000007ea2 x21 00000000ffffffff x22 00000070a8e5b4c0 x23 000000712c5d5835
x24 000000712c5f749e x25 0000000000000001 x26 000000712cbf7258 x27 00000071b225c880
x28 0000000000000000 x29 00000070c0e62120
sp 00000070c0e62060 lr 00000071af485f88 pc 00000071af485fb4
backtrace:
#00 pc 0000000000082fb4 /apex/com.android.runtime/lib64/bionic/libc.so (abort+160)
#1 pc 00000000004b4850 /apex/com.android.runtime/lib64/libart.so (_ZN3art7Runtime5AbortEPKc+2272)
#2 pc 000000000000c5b8 /system/lib64/libbase.so (_ZN7android4base10LogMessageD1Ev+612)
#3 pc 0000000000442f54 /apex/com.android.runtime/lib64/libart.so (_ZNK3art9OatHeader17GetCompilerFilterEv+284)
#4 pc 000000000044a84c /apex/com.android.runtime/lib64/libart.so (_ZNK3art7OatFile17GetCompilerFilterEv+44)
#5 pc 0000000000455d00 /apex/com.android.runtime/lib64/libart.so (_ZN3art14OatFileManager14DumpForSigQuitERNSt3__113basic_ostreamIcNS1_11char_traitsIcEEEE+380)
#6 pc 00000000004c1d40 /apex/com.android.runtime/lib64/libart.so (_ZN3art7Runtime14DumpForSigQuitERNSt3__113basic_ostreamIcNS1_11char_traitsIcEEEE+108)
#7 pc 000000000000648c /data/app/com..-HCMqtsa_bMSx6IjK9XhC8A==/lib/arm64/libxcrash.so
#8 pc 00000000000e2060 /apex/com.android.runtime/lib64/bionic/libc.so
#9 pc 0000000000084af4 /apex/com.android.runtime/lib64/bionic/libc.so
#10 pc 0000000000000000
java stacktrace:
(no managed stack frames)
memory info:
Process Summary (From: android.os.Debug.MemoryInfo)
Pss(KB)
------
Java Heap: 50440
Native Heap: 77584
Code: 16648
Stack: 60
Graphics: 10752
Private Other: 17600
System: 47317
TOTAL: 220401 TOTAL SWAP: 46972
foreground:
no
能出一个XCrash.init的配置文档么
请问Filemanager里面的placeholderCountMax有什么作用,代码没看懂
android 8.1
我构造了一个Service启动相关的ANR在独立的进程。
在开发者选项中打开所有显示所有ANR后,可以看到ANR发生,
但是ANRCallback没有回调。
主进程UI事件分发类ANR测试正常
XCrash.init() 必须在attachBaseContext里调用吗? 必须是主线程调用吗?
目前发现如果是后台线程调用init会抓取不到ANR信息。
我编译的时候,报这种错误
Task :xcrash_lib:checkstyle FAILED
[ant:checkstyle] [ERROR] D:\Dev.space\xCrash-master_bak\xCrash-master\src\java\xcrash\xcrash_lib\src\main\java\xcrash\ActivityMonitor.java:1: 文件未以空行结尾▒? [NewlineAtEndOfFile]
[ant:checkstyle] [ERROR] D:\Dev.space\xCrash-master_bak\xCrash-master\src\java\xcrash\xcrash_lib\src\main\java\xcrash\AnrHandler.java:1: 文件未以空行结尾▒? [NewlineAtEndOfFile]
[ant:checkstyle] [ERROR] D:\Dev.space\xCrash-master_bak\xCrash-master\src\java\xcrash\xcrash_lib\src\main\java\xcrash\DefaultLogger.java:1: 文件未以空行结尾▒? [NewlineAtEndOfFile]
[ant:checkstyle] [ERROR] D:\Dev.space\xCrash-master_bak\xCrash-master\src\java\xcrash\xcrash_lib\src\main\java\xcrash\Errno.java:1: 文件未以空行结尾▒? [NewlineAtEndOfFile]
ANR在5.0之间的版本通过Observe /data/anr变化来实现,为什么没有跟5.0之后一样,通过捕获信号量来实现?谢谢!
First of all, thank you for your work. And then the issue:
When test "native crash (in another process)", it cause double times crashes/catches, create 2 tombstones in seconds.
I compared that files, they have different catch pid
, tid
, and some random memory addr, and later one have following stack additionally:
stack:
...
00000074d963c000-00000074d963d000 --- 0 1000 [anon:thread signal stack guard]
00000074d963d000-00000074d9641000 rw- 0 4000 [anon:thread signal stack]
...
00000074d96fa000-00000074d96fb000 --- 0 1000 [anon:bionic TLS guard]
00000074d96fb000-00000074d96fe000 rw- 0 3000 [anon:bionic TLS]
00000074d96fe000-00000074d96ff000 --- 0 1000 [anon:bionic TLS guard]
...
Is it a feature or something else?
发布后是不方便查看用户设备的,是否可以把crash log上传到指定服务器?
为什么不用cmake呢?是因为dumper是个可执行程序的原因吗?如果放在AndroidStudio里是不是编译就有问题,如果单独用命令执行,也需要有个重命名的过程?
非常感谢各位开源的xCrash方案,如果有想进一步了解原理的可以看看这篇文章
虽然将日志保存到应用的内部存储目录(/data/data/pkg/files/tombstones),可以避免申请权限,但如果此时设备无法使用网络,则无法将日志上传server端,release版本也没法直接获取日志。
建议将日志默认目录修改到Android/data/pkg/files/tombstones目录(getExternalFilesDir("tombstones").absolutePath),该目录同样可以避免申请SD卡读写权限,而且也能保证用户可以将日志从手机上拷贝出来。
诚然,在文档上有说明getExternalFilesDir有可能返回null,从当前来说几乎没有不带存储的设备了,为了避免这种极端的null,可以类似先判断,如果是null则存到App的私有data目录,反之则存到SD卡上。
val externalFolder = getExternalFilesDir("tombstones")
if (externalFolder != null) {
parameters.setLogDir(externalFolder.absolutePath)
}
请问,发生崩溃后如何在合适的时机去上传这些崩溃的文件到服务端?
ANR异常捕获应该还比较好获得的吧,这个功能在Xcrash上支持吗
系统环境:
Linux version 4.15.0-42-generic (buildd@lgw01-amd64-023) (gcc version 7.3.0 (Ubuntu 7.3.0-16ubuntu3)) #45-Ubuntu SMP Thu Nov 15 19:32:57 UTC 2018
NDK版本:21.0.6113669
编译时提示:
src/native/libxcrash/jni/xc_crash.c:464:13: error: empty expression statement has no effect; remove unnecessary ';' to silence this warning [-Werror,-Wextra-semi-stmt]
src/native/libxcrash_dumper/jni/lzma/Bra.c:37:24: error: empty expression statement has no effect; remove unnecessary ';' to silence this warning [-Werror,-Wextra-semi-stmt]
src/native/libxcrash_dumper/jni/lzma/Bra.c:58:24: error: empty expression statement has no effect; remove unnecessary ';' to silence this warning [-Werror,-Wextra-semi-stmt]
xc_crash_init_callback里会新建一个native线程,来回调java层方法,crash时会不会无法执行完?
存在app进程已crash退出,但是回调的Java方法没有执行结束
不是只load xcrash.so了吗 ?
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.