Android NDK tombstone分析工具

2023-05-16

Android NDK tombstone分析工具

在Andoird Native库发生异常的时候,Linux会发生不同级别的sig,来结构相关进程的运行,同时会产生tombstone trace文件用于记录发生崩溃寄存器和堆栈的状态。

这里面的涉及的知识点很多,但该文主要是介绍一下这种情况debug的工具stack.py。

1,keypoint

a,Android sig/进程间通讯

b,Linux 内存管理/ 用户空间和内核空间

c,Arm汇编

d,Android库的链接Linker

2,tombstone的结构大概如下

*** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
Build fingerprint: 'MBX/k200/k200:4.4.2/KOT49H/20140717:user/test-keys'
Revision: '11'
pid: 455, tid: 486, name: InputDispatcher  >>> system_server <<<
signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 00290238
    r0 00290008  r1 00000230  r2 00000003  r3 00290008
    r4 64a42042  r5 677d9eac  r6 677f16e8  r7 000003f2
    r8 41656d40  r9 00000002  sl 00000000  fp 68088ca0
    ip 000000f2  sp 68088b38  lr 00000000  pc 4165a9d8  cpsr 200b0010
10      d0  677d9fd84b000000  d1  626e402800010000
11      d2  002e00640069006f  d3  00650074006e0069
12      d4  006c0061006e0072  d5  006c006f0070002e
13      d6  002e007900630069  d7  00790065004b0049
14      d8  0000000000000000  d9  0000000000000000
15      d10 0000000000000000  d11 0000000000000000
16      d12 0000000000000000  d13 0000000000000000
17      d14 0000000000000000  d15 0000000000000000
18      d16 3d5e000000000000  d17 3d5e000000000000
19      d18 408f400000000000  d19 41168cb340000000
20      d20 4020f5c28f5c28f6  d21 408a800000000000
21      d22 40b4c3e100000000  d23 3ff0000000000000
22      d24 41f2a05f20000000  d25 40b3880000000000
23      d26 408a800000000000  d27 4053000000000000
24      d28 0000000000000000  d29 0000000000000000
25      d30 0100010001000100  d31 0100010001000100
26      scr 20000010
27   
28  backtrace:
29      #00  pc 000219d8  /system/lib/libdvm.so
30      #01  pc 0002dfa0  /system/lib/libdvm.so (dvmMterpStd(Thread*)+76)
31      #02  pc 0002b638  /system/lib/libdvm.so (dvmInterpret(Thread*, Method const*, JValue*)+184)
32      #03  pc 00060581  /system/lib/libdvm.so (dvmCallMethodV(Thread*, Method const*, Object*, bool, JValue*, std::__va_list)+336)
33      #04  pc 0004c9cd  /system/lib/libdvm.so
34      #05  pc 00009de9  /system/lib/libandroid_servers.so
35      #06  pc 0000a2b7  /system/lib/libandroid_servers.so (android::NativeInputManager::interceptKeyBeforeDispatching(android::sp<android::InputWindowHandle> const&, android::KeyEvent const*, unsigned int)+58)
36      #07  pc 00020a49  /system/lib/libinputservice.so (android::InputDispatcher::doInterceptKeyBeforeDispatchingLockedInterruptible(android::InputDispatcher::CommandEntry*)+60)
37      #08  pc 00022487  /system/lib/libinputservice.so (android::InputDispatcher::runCommandsLockedInterruptible()+58)
38      #09  pc 0002571b  /system/lib/libinputservice.so (android::InputDispatcher::dispatchOnce()+50)
39      #10  pc 0001fb61  /system/lib/libinputservice.so (android::InputDispatcherThread::threadLoop()+8)
40      #11  pc 0000e9ed  /system/lib/libutils.so (android::Thread::_threadLoop(void*)+104)
41      #12  pc 0004d4b1  /system/lib/libandroid_runtime.so (android::AndroidRuntime::javaThreadShell(void*)+68)
42      #13  pc 0000e58f  /system/lib/libutils.so
43      #14  pc 0000d200  /system/lib/libc.so (__thread_entry+72)
44      #15  pc 0000d398  /system/lib/libc.so (pthread_create+240)
45   

其中backtrace就是当时system_server接收到signal 11时,堆栈调用的信息,这些信息很重要,能帮忙还原发生异常的现场。signal 11的定义在这里$android_root/prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.7-4.6/sysroot/usr/include/bits/signum.h

/* Signals.  */
#define    SIGHUP        1    /* Hangup (POSIX).  */
#define    SIGINT        2    /* Interrupt (ANSI).  */
#define    SIGQUIT        3    /* Quit (POSIX).  */
#define    SIGILL        4    /* Illegal instruction (ANSI).  */
#define    SIGTRAP        5    /* Trace trap (POSIX).  */
#define    SIGABRT        6    /* Abort (ANSI).  */
#define    SIGIOT        6    /* IOT trap (4.2 BSD).  */
#define    SIGBUS        7    /* BUS error (4.2 BSD).  */
10  #define    SIGFPE        8    /* Floating-point exception (ANSI).  */
11  #define    SIGKILL        9    /* Kill, unblockable (POSIX).  */
12  #define    SIGUSR1        10    /* User-defined signal 1 (POSIX).  */
13  #define    SIGSEGV        11    /* Segmentation violation (ANSI).  */
14  #define    SIGUSR2        12    /* User-defined signal 2 (POSIX).  */
15  #define    SIGPIPE        13    /* Broken pipe (POSIX).  */
16  #define    SIGALRM        14    /* Alarm clock (POSIX).  */
17  #define    SIGTERM        15    /* Termination (ANSI).  */
18  #define    SIGSTKFLT    16    /* Stack fault.  */
19  #define    SIGCLD        SIGCHLD    /* Same as SIGCHLD (System V).  */
20  #define    SIGCHLD        17    /* Child status has changed (POSIX).  */
21  #define    SIGCONT        18    /* Continue (POSIX).  */
22  #define    SIGSTOP        19    /* Stop, unblockable (POSIX).  */
23  #define    SIGTSTP        20    /* Keyboard stop (POSIX).  */
24  #define    SIGTTIN        21    /* Background read from tty (POSIX).  */
25  #define    SIGTTOU        22    /* Background write to tty (POSIX).  */
26  #define    SIGURG        23    /* Urgent condition on socket (4.2 BSD).  */
27  #define    SIGXCPU        24    /* CPU limit exceeded (4.2 BSD).  */
28  #define    SIGXFSZ        25    /* File size limit exceeded (4.2 BSD).  */
29  #define    SIGVTALRM    26    /* Virtual alarm clock (4.2 BSD).  */
30  #define    SIGPROF        27    /* Profiling alarm clock (4.2 BSD).  */
31  #define    SIGWINCH    28    /* Window size change (4.3 BSD, Sun).  */
32  #define    SIGPOLL        SIGIO    /* Pollable event occurred (System V).  */
33  #define    SIGIO        29    /* I/O now possible (4.2 BSD).  */
34  #define    SIGPWR        30    /* Power failure restart (System V).  */
35  #define SIGSYS        31    /* Bad system call.  */
36  #define SIGUNUSED    31

stack.py工具就是要把backtrace通过addr2line工具一次性把15个addr对应到代码。

先看一下帮助,在主机上执行

python stack.py --help

build/core/envsetup.mk:10: /version_defaults.mk: No such file or directory
build/core/envsetup.mk:115: /product_config.mk: No such file or directory
make: *** No rule to make target `/product_config.mk'.  Stop.
 
  usage: stack.py [options] [FILE]
 
  --symbols-dir=path
       the path to a symbols dir, such as =/tmp/out/target/product/dream/symbols
 
10    --symbols-zip=path
11         the path to a symbols zip file, such as =dream-symbols-12345.zip
12   
13    --auto
14         attempt to:
15           1) automatically find the build number in the crash
16           2) if it's an official build, download the symbols 
17              from the build server, and use them
18   
19    FILE should contain a stack trace in it somewhere
20         the tool will find that and re-print it with
21         source files and line numbers.  If you don't
22         pass FILE, or if file is -, it reads from
23         stdin.

tombstone生成文件一般位于手机中/data/tombstone/文件夹下面,工具使用如下:

python stack.py --symbols-dir=out/target/product/$yourproduct/symbols/ tombstone-00





Searching for native crashes in tombstone-0718
Reading symbols from out/target/product/k200/symbols/
pid: 455, tid: 486, name: InputDispatcher  >>> system_server <<<
signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 00290238
    r0 00290008  r1 00000230  r2 00000003  r3 00290008
    r4 64a42042  r5 677d9eac  r6 677f16e8  r7 000003f2
    r8 41656d40  r9 00000002  sl 00000000  fp 68088ca0
    ip 000000f2  sp 68088b38  lr 00000000  pc 4165a9d8
 
10  Stack Trace:
11    ADDR      FUNCTION                                                                                                                                            FILE:LINE
12    000219d8  dalvik_inst                                                                                                                                         /mnt/nfsroot/gangfeng.xu/work/kk-amlogic-dev/dalvik/vm/mterp/out/InterpAsm-armv7-a-neon.S:7358
13    0002dfa0  dvmMterpStd(Thread*)                                                                                                                                /mnt/nfsroot/gangfeng.xu/work/kk-amlogic-dev/dalvik/vm/mterp/Mterp.cpp:105
14    0002b638  dvmInterpret(Thread*, Method const*, JValue*)                                                                                                       /mnt/nfsroot/gangfeng.xu/work/kk-amlogic-dev/dalvik/vm/interp/Interp.cpp:1961
15    00060581  dvmCallMethodV(Thread*, Method const*, Object*, bool, JValue*, std::__va_list)                                                                      /mnt/nfsroot/gangfeng.xu/work/kk-amlogic-dev/dalvik/vm/interp/Stack.cpp:526
16    0004c9cd  CallLongMethodV                                                                                                                                     /mnt/nfsroot/gangfeng.xu/work/kk-amlogic-dev/dalvik/vm/Jni.cpp:1968
17    00009de9  _JNIEnv::CallLongMethod(_jobject*, _jmethodID*, ...)                                                                                                /mnt/nfsroot/gangfeng.xu/work/kk-amlogic-dev/libnativehelper/include/nativehelper/jni.h:625
18    0000a2b7  android::NativeInputManager::interceptKeyBeforeDispatching(android::sp<android::InputWindowHandle> const&, android::KeyEvent const*, unsigned int)  /mnt/nfsroot/gangfeng.xu/work/kk-amlogic-dev/frameworks/base/services/jni/com_android_server_input_InputManagerService.cpp:938
19    00020a49  android::InputDispatcher::doInterceptKeyBeforeDispatchingLockedInterruptible(android::InputDispatcher::CommandEntry*)                               /mnt/nfsroot/gangfeng.xu/work/kk-amlogic-dev/frameworks/base/services/input/InputDispatcher.cpp:3478
20    00022487  android::InputDispatcher::runCommandsLockedInterruptible()                                                                                          /mnt/nfsroot/gangfeng.xu/work/kk-amlogic-dev/frameworks/base/services/input/InputDispatcher.cpp:615 (discriminator 3)
21    0002571b  android::InputDispatcher::dispatchOnce()                                                                                                            /mnt/nfsroot/gangfeng.xu/work/kk-amlogic-dev/frameworks/base/services/input/InputDispatcher.cpp:237
22    0001fb61  android::InputDispatcherThread::threadLoop()                                                                                                        /mnt/nfsroot/gangfeng.xu/work/kk-amlogic-dev/frameworks/base/services/input/InputDispatcher.cpp:4484
23    0000e9ed  android::Thread::_threadLoop(void*)                                                                                                                 /mnt/nfsroot/gangfeng.xu/work/kk-amlogic-dev/system/core/libutils/Threads.cpp:770
24    0004d4b1  android::AndroidRuntime::javaThreadShell(void*)                                                                                                     /mnt/nfsroot/gangfeng.xu/work/kk-amlogic-dev/frameworks/base/core/jni/AndroidRuntime.cpp:1000
25    0000e58f  thread_data_t::trampoline(thread_data_t const*)                                                                                                     /mnt/nfsroot/gangfeng.xu/work/kk-amlogic-dev/system/core/libutils/Threads.cpp:95
26    0000d200  __thread_entry                                                                                                                                      /mnt/nfsroot/gangfeng.xu/work/kk-amlogic-dev/bionic/libc/bionic/pthread_create.cpp:105
27    0000d398  pthread_create                                                                                                                                      /mnt/nfsroot/gangfeng.xu/work/kk-amlogic-dev/bionic/libc/bionic/pthread_create.cpp:224

很方便吧,不用一个一个的去找了。

工具链接如下:

stack.py

 

 

refer to:
https://sites.google.com/a/itspaclub.com/www/android-debug/7-how-to-debug-native-code
http://stackoverflow.com/questions/5106581/how-to-get-longer-stacktrace-tombstone-from-android
http://blog.csdn.net/helldevil/article/details/6682211

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android NDK tombstone分析工具 的相关文章

  • CoreText --- 段落样子CTParagraphStyle

    在前面一篇文章中 xff0c 介绍了属性文字的基本使用 xff0c 本章节主要针对文字的段落样式展开演示说明 先定义一段演示文字 xff08 文字中有中 xff0c 英文 xff09 cpp view plain copy NSString
  • 将自己的域名解析跳转到博客主页(GitHub中的gitpage跳转)

    最近突然迷上了博客 xff0c 突然又突发奇想 xff0c 将自己几个月前买的现在限制的域名拿来跳转到自己的csdn博客 经过一番研究 xff0c 总结 把自己的购买的域名 比如我买的circleyuan top 跳转到CSDN博客 只需要
  • Python3.4简单爬虫实现之抓取糗事百科段子

    网上的python教程大都是2 X版本的 xff0c python2 X和python3 X相比较改动比较大 xff0c 好多库的用法不太一样 xff0c 我安装的是3 4 1 xff0c 就用3 4 1实现一下网页内容抓取 首先是库 xf
  • 【C++】类和对象的关系

    概念 xff1a 对象 xff1a 将数据和对数据的操作方法放在一起 xff0c 形成一个相对独立的整体 属性和操作是对象的两大要素 类 xff1a 某一类对象所共有的 本质的属性和类行为 类和对象的关系 类是抽象的 xff0c 对象是具体
  • 美团笔试题_20220409

    前言 笔试一共五道编程题 xff08 四 43 一 xff09 xff0c 一为专项编程题 xff0c 估计不同岗位有题目不一样 xff0c 使用的是赛码网 xff0c 允许跳出界面使用自己的IDE 在此感谢筱羊冰冰提供的部分题目及题解 题
  • Android应用管理一 -- APK包的安装、卸载和优化(PackageManagerService)

    Android的应用管理主要是通过PackageManagerService来完成的 PackageManagerService服务负责各种APK包的安装 卸载 优化和查询 PackageManagerService在启动时会扫描所有的AP
  • Android5.1--多用户模式

    Android中的多用户与Windows的多用户类似 xff0c 可以支持多个用户使用系统 通常 xff0c 第一个在系统中注册的用户将默认成为系统管理员 不同用户的设置各不相同 xff0c 并且不同用户安装的应用及应用数据也不相同 但是系
  • Android--应用安装卸载失败问题分析

    1 应用安装失败 xff1a does not include classes dex 08 04 17 15 23 118W dalvikvm 5253 DexOptZ zip archive 39 data app cloneit 1
  • Android5.1--电源管理之省电模式分析

    一 如何开启5 0省电模式 打开安卓5 0设备的设置选项 xff0c 然后前往电池菜单 xff0c 点击菜单键 xff0c 弹出并选择 节电助手 xff0c 随后点击顶部的开关便可 此外 xff0c 要是用户运行的是原生版安卓 xff0c
  • 如何判断一个未安装的APK是Launcher应用

    网上找的大都是已安装应用的判断方法 xff0c 那么如何判断未安装的apk是否是桌面应用呢 xff1f 直接上代码 xff1a private boolean isLauncherApp String dexPath boolean isH
  • oracle 备份表

    一 PL SQL备份 xff08 1 xff09 打开PL SQL xff08 2 xff09 在Tools下选择Export Tables xff08 3 xff09 在列表中找到想要备份的表 xff0c 右键选择Export Data
  • Android 预置应用

    预置应用主要有4种情况 xff1a 1 如何将带源码的应用预置进系统 xff1f 2 如何将无源码的应用预置 xff08 APK xff09 进系统 xff1f 3 如何预置应用使得用户可以卸载 xff0c 恢复出厂设置时不能恢复 xff1
  • Android广播管理三--广播发送(sendBroadcast)流程分析

    前面我们分析了Android应用程序注册广播接收器的过程 xff0c 接下来它还要等待ActivityManagerService将广播分发过来 ActivityManagerService是如何得到广播并把它分发出去的呢 xff1f 广播
  • 避免后台进程被杀死的几种方法

    Android的几种进程 前台进程 即与用户正在交互的Activity或者Activity用到的Service等 xff0c 如果系统内存不足时前台进程是最后被杀死的 可见进程 可以是处于暂停状态 onPause 的Activity或者绑定
  • Android性能优化 -- Systrace工具

    Systrace简介 一般来说 xff0c 我们的机器以60帧 秒显示时 xff0c 用户会感觉机器很流畅 xff0c 如果显示时出现丢帧的情况 xff0c 需要知道当前整个系统所处的状态 xff0c 这个时候Systrace便是最佳的工具
  • Android性能优化 -- 应用启动优化之启动页设计

    上篇博客我们学习了应用启动优化的一些优化思路 xff0c 经过这些优化后 xff0c 如果还不能达到你的要求 xff0c 我们一般会做个启动页 因为启动页一般View数量比较少 xff0c 业务逻辑比较简单 xff0c 因此启动比较快 一
  • Android性能优化 -- 布局优化

    一 前言 根据Google官方出品的Android性能优化典范 xff0c 60帧每秒是目前最合适的图像显示速度 xff0c 事实上绝大多数的Android设备也是按照每秒60帧来刷新的 为了让屏幕的刷新帧率达到60fps xff0c 我们
  • ubuntu server 18.0.4自动免密登录

    参考https zhuanlan zhihu com p 79422682 1 xff09 设置自动登录user sudo vim etc systemd system getty target wants getty 64 tty1 se
  • nginx 反向代理设置中的proxy_redirect

    Nginx做反向代理 xff0c 如果在header设置了Host参数 xff0c 同时如果有协议和二级目录有不一致的情况的时候 xff0c 当后端服务做302 301跳转的时候 需要用proxy redirect将后端设置在respons
  • iOS - OC - ARC中使用MRC(非ARC)文件(草稿)

    设置非arc模式 刚创建的项目是自动管理内存 xff08 arc xff09 的 xff0c 而asi是手动内存管理 xff08 非arc xff09 的 xff0c 可以在创建项目后设置Build Settings的搜索栏里输入gar x

随机推荐

  • 批量识别PDF文件(图片类型)中的文字

    如何批量识别PDF图片中的文字 xff0c 一直是一个效率很低 xff0c 很繁琐的事情 小编为大家提供一款基于tesseract5 0 OCR版本的PDF文件 图片类型 批量识别工具 xff0c 此工具的用途是批量把PDF转换成文本文件
  • 《最重要的事,只有一件》读书笔记

    背景 每天都在忙忙碌碌中度过 xff0c 感觉到很累 xff0c 但仔细思考一下好像也没有收获 仔细想一想 xff0c 在每天之中 xff0c 大脑主动或被动的接受了太多的信息 xff0c 如果没有给信息分出轻重缓急 xff0c 整理归类
  • TS核心知识点总结及项目实战案例分析

    前言 最近工作一直很忙 xff0c 复盘周期也有所拉长 xff0c 不过还是会坚持每周复盘 今天笔者将复盘一下typescript在前端项目中的应用 xff0c 至于为什么要学习typescript xff0c 我想大家也不言自明 xff0
  • Archlinux + KDE 配置&美化

    Arch Linux 43 KDE 配置 amp 美化 xff08 持续更新 xff09 这篇文章着重记录archlinux 43 KDE的一个基本的配置过程 不包括安装过程 xff08 使用arch install安装脚本 xff09 内
  • preference 用法之Settings

    preference 用法之Settings 我们的app有时常需要包含Settings xff0c 那我们该怎样允许app使用Settings呢 xff1f 这里我们就需要用到Preference类 下面我就举一个例子来让我们更好的理解
  • Android7.1解决应用系统属性设置类SystemProperties导入问题

    试了很多种方法 xff0c 有说导入系统的framework jar的 xff0c 试过依然不行 xff0c 最后确认可行的办法就是导入layoutlib jar包 1 在Sdk platform android XX data目录下找到l
  • Android生物识别-androidx.biometric的使用方法

    参考文献 android developer biometric 截止发稿时需要的依赖 implementation span class token string 39 androidx biometric biometric 1 2 0
  • 生产者消费者算法的简单实现

    系列文章目录 文章目录 系列文章目录 实验内容 背景知识 1 了解经典同步问题 生产者和消费者 思路 二 源代码运行结果结论 实验内容 1 问题描述 xff1a 一组生产者向一组消费者提供消息 xff0c 它们共享一个有界缓冲池 xff0c
  • CentOS7.5 VNC Server服务配置

    转载文章 xff1a https blog csdn net hnhuangyiyang article details 50827670 一 安装VNC相关包 yum list tigerserver yum install tigerv
  • 使用github OAuth实现用户登录

    更多文章请关注 xff1a https eightplus github io 1 在github上申请OAuth App xff0c 进入个人的Github首页 xff0c Settings gt Applications gt Deve
  • 二叉搜索树的第k大节点

    二叉搜索树的第k大节点 题目 给定一棵二叉搜索树 xff0c 请找出其中第 k 大的节点的值 示例 1 输入 root 61 3 1 4 null 2 k 61 1 3 1 4 2 输出 4 示例 2 输入 root 61 5 3 6 2
  • 关于STM32的编码器计数及溢出处理调试总结

    错误1 pc6 pc7被用作其他用途 GPIO模式配置错误 导致计数不准确 错误2 引脚模式设置错误 应该设置为GPIO Mode IPD GPIO Mode IPU nbsp GPIO Mode IN FLOATING nbsp 都可以
  • Android getResources的作用和需要注意点

    今天做一个Android的文件管理器 xff0c 里面用到很多的地方用到了getResources Drawable currentIcon 61 null currentIcon 61 getResources getDrawable R
  • 功能测试,系统测试,兼容性测试,手工测试

    功能测试 功能测试一般需要根据编写的 测试用例 xff0c 执行测试用例 xff0c 执行的过程中提交缺陷 xff1b 功能测试一般至少会有两轮 xff0c 遇到比较麻烦的项目甚至会有三到四轮 xff0c 而每一轮测试都有其侧重点 xff0
  • 古诗文本自动生成唐诗文本生成(算例代码)

    首先准备好一个本地文件 xff0c 在此我命名为唐诗三百首 txt如下图 https img blog csdnimg 图片 代码如下 span class token keyword import span numpy span clas
  • ChatGPT被淘汰了?Auto-GPT到底有多强

    大家好 xff0c 我是可夫小子 xff0c 关注AIGC 读书和自媒体 解锁更多ChatGPT AI绘画玩法 说Auto GPT淘汰了ChatGPT了 xff0c 显然是营销文案里面的标题党 毕竟它还是基于ChatGPT的API xff0
  • 案例分享:让ChatGPT充当程序员,帮你无代码实现网络爬虫

    大家好 xff0c 我是可夫小子 xff0c 关注AIGC 读书和自媒体 解锁更多ChatGPT AI绘画玩法 加 xff1a keeepdance xff0c 备注 xff1a chatgpt xff0c 拉你进群 提示 xff1a 本案
  • 插件推荐:一键保存ChatGPT对话记录GPT-EZ

    大家好 xff0c 我是可夫小子 xff0c 关注AIGC 读书和自媒体 解锁更多ChatGPT AI绘画玩法 加 xff1a keeepdance xff0c 备注 xff1a chatgpt xff0c 拉你进群 我们在与ChatGPT
  • 案例分享:ChatGPT写python脚本,轻松文本处理

    大家好 xff0c 我是可夫小子 xff0c 关注AIGC 读书和自媒体 解锁更多ChatGPT AI绘画玩法 加 xff1a keeepdance xff0c 备注 xff1a chatgpt xff0c 拉你进群 在工作中 xff0c
  • Android NDK tombstone分析工具

    Android NDK tombstone分析工具 在Andoird Native库发生异常的时候 xff0c Linux会发生不同级别的sig xff0c 来结构相关进程的运行 xff0c 同时会产生tombstone trace文件用于