http://www.cnblogs.com/shakin/p/4268399.htmlhtml
http://blog.chinaunix.net/uid-1877180-id-3011232.html函数
其余关键字:Google Breakpadui
Docs:google
https://chromium.googlesource.com/breakpad/breakpad/+/master/docs/spa
Source:.net
https://chromium.googlesource.com/breakpad/breakpaddebug
具体使用方法:(google-breakpad)unix
http://www.cnblogs.com/catch/archive/2013/02/02/2882016.html指针
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); }