Androdi native Crash log & linux crash handler

本文详细介绍了 Android 系统中 tombstones 日志文件的作用及其在 native crash 时的生成机制。同时深入探讨了 Google Breakpad 的具体使用方法,帮助开发者更好地理解和解决应用崩溃问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

传送:

http://www.cnblogs.com/shakin/p/4268399.html

http://blog.chinaunix.net/uid-1877180-id-3011232.html

其他关键字:Google Breakpad

Docs:

https://chromium.googlesource.com/breakpad/breakpad/+/master/docs/

Source:

https://chromium.googlesource.com/breakpad/breakpad

 

具体使用方法:(google-breakpad)

http://www.cnblogs.com/catch/archive/2013/02/02/2882016.html

 

 

Android tombstones 分析

Android系统中应用出现nativecrash时,会在 /data/tombstones 目录下生成 tombstone_xx 的日志文件,记录了应用crash发生时的内存、寄存器、堆栈信息等。并且通过logcat将其内容输出。

 

SA_SIGINFO : 使其可以知道自己是被什么进程,那个用户,发来的什么信号,发来该信号的具体的原因是什么

SA_RESETHAND :

SA_NODEFER :

SA_INTERRUPT 由此信号中断的系统调用不会自动重启
SA_RESTART 由此信号中断的系统调用会自动重启

SA_SIGINFO 提供附加信息,一个指向siginfo结构的指针以及一个指向进程上下文标识符的指针

(2)    SA_NODEFER       一般情况下, 当信号处理函数运行时,内核将阻塞<该给定信号 -- SIGINT>。但是如果设置了SA_NODEFER标记, 那么在该信号处理函数运行时,内核将不会阻塞该信号。 SA_NODEFER是这个标记的正式的POSIX名字(还有一个名字SA_NOMASK,为了软件的可移植性,一般不用这个名字)   
       SA_RESETHAND    当调用信号处理函数时,将信号的处理函数重置为缺省值。 SA_RESETHAND是这个标记的正式的POSIX名字(还有一个名字SA_ONESHOT,为了软件的可移植性,一般不用这个名字) 

 

 

 

 

 

Android 4.0中tombstones处理部分的源码位于 /system/core/debuggerd 和 bonic/linker/debugger.c 中。

在 bonic/linker/debugger.c 中的 debugger_init() 中对7个Signal进行了注册处理,debugger_signal_handler作为信号处理函数。

void debugger_init()
{
  struct sigaction act;
  memset(&act, 0, sizeof(act));
  act.sa_sigaction = debugger_signal_handler;
  act.sa_flags = SA_RESTART | SA_SIGINFO;
  sigemptyset(&act.sa_mask);

  sigaction(SIGILL, &act, NULL);
  sigaction(SIGABRT, &act, NULL);
  sigaction(SIGBUS, &act, NULL);
  sigaction(SIGFPE, &act, NULL);
  sigaction(SIGSEGV, &act, NULL);
  sigaction(SIGSTKFLT, &act, NULL);
  sigaction(SIGPIPE, &act, NULL);
}

转载于:https://my.oschina.net/u/592116/blog/742524

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值