首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏嵌入式音视频

    Android Tombstone 分析

    1.什么是tombstone Tombstone是指在分布式系统中用于标记数据已被删除的记录,通常包含删除操作的时间戳和相关信息。 这个tombstone文件类似于墓碑,记录了已终止进程的基本信息,包括进程号、线程号、崩溃地址等。 此外,tombstone文件还会详细记录崩溃时的现场情况,包括一系列的堆栈调用信息,帮助开发人员分析问题并进行调试。 2.tombstone文件长什么样 一个tombstone文件大概包含以下信息 --------- beginning of crash F/libc ( 244): invalid address -00(tombstone文件)

    2.5K10编辑于 2024-03-03
  • 来自专栏嵌入式音视频

    学习tombstone,signal

    Tombstone文件以tombstone_XX形式命名,该文件个数上限可以进行设置,当超过上限时则每次覆盖时间最老的文件。Tombstone记录了崩溃的进程的基本信息,堆栈调用信息,内存信息等等。 最终tombstone通过engrave_tombstone()函数生成,engrave_tombstone函数的第二个参数,unwinder,是输出 backtrace等信息的关键函数。 crash_dump进程后续通过engrave_tombstone函数将所有的线程的详细信息写入到tombstone文件中,至此就在/data/tombstones下生成了此次对应的tombstone_XX 三、Tombstone文件实例分析 上文中我们提到,tombstone通过engrave_tombstone()函数生成,在这一节中,我们将结合实例和代码来介绍tombstone文件中都包含哪些内容,这些内容都是如何获取和输出出来的 Tombstone实例如下: 四、Tombstone文件分析方法 在tombstone中我们可以看到进程的pid和线程的tid,如果pid和tid相等,那么可以判断crash发生在这个进程的主线程中,

    2.4K20编辑于 2022-11-11
  • 来自专栏Linux内核深入分析

    Android tombstone文件是如何生成的

    Tombstone初识 tombstone到底长啥样呢? tombstone_01 -rw-r----- 1 root root 3454991 2020-03-14 10:29 tombstone_02 -rw-r----- 1 root root 3454991 2020-03-14 10:29 tombstone_03 打开一个文件,看看tombstone到底长啥样 *** *** *** *** *** *** *** *** abort_msg_address, &open_files, &amfd_data); } } 最终tombstone是通过engrave_tombstone来进程生成的。 函数将所有的线程的详细信息写入到tombstone文件中 则就在/data/tombstones下生成了此次对应的tombstone_XX文件

    6.6K21发布于 2020-03-24
  • 来自专栏韩曙亮的移动开发专栏

    【Android NDK 开发】NDK CC++ 代码崩溃调试 - Tombstone 报错信息日志文件分析 ( 获取 tombstone_0X 崩溃日志信息 )

    文章目录 一、崩溃信息描述 二、手机命令行操作 三、电脑命令行操作 四、Tombstone 内容 Tombstone 报错信息日志文件被保存在了 /data/tombstones/ 目录下 , 先 ROOT E//system/bin/tombstoned: Tombstone written to: /data/tombstones/tombstone_00 在上述崩溃信息的最后给出了提示 “Tombstone written to: /data/tombstones/tombstone_00” , 崩溃日志信息被保存到了 /data/tombstones/tombstone_00 文件中 ; 二、手机命令行操作 卡拉取该文件 ; 将 /sdcard/tombstone_00 崩溃日志文件拉取到本地 ; adb pull /sdcard/tombstone_00 . 这样就获取到了 tombstone_00 文件 ; 四、Tombstone 内容 ---- 打开后查看其中的大致内容 : *** *** *** *** *** *** *** *** *** ***

    2.2K00编辑于 2023-03-28
  • 来自专栏程序员的成长之路

    十月份精选Github项目推荐:xCrash

    xCrash 能在 App 进程崩溃或 ANR 时,在你指定的目录中生成一个 tombstone 文件(格式与安卓系统的 tombstone 文件类似)。 ? Tombstone 文件默认将被写入到 Context#getFilesDir() + “/tombstones” 目录。

    87220发布于 2019-11-07
  • 来自专栏本体研究院

    本体技术视点 | 一文读懂Substrate的合约机制(一)

    当合约账户的余额不够支付存储租金时,合约的存储会被清理并进入 tombstone 状态。 pub last_write: Option<BlockNumber>, // 最近一次child 存储写入数据的区块号 } tombstone 状态的合约信息 当合约进入 tombstone 状态后, pub struct RawTombstoneContractInfo<H, Hasher>(H, PhantomData<Hasher>); 合约的复活 合约进入 tombstone 状态后,技术上是可以进行恢复的 合约的存储中插入原合约中的 key-value 对,使 storage root 和原合约完全一致,然后调用 restore_to 合约接口,这个接口会检查当前合约的 storage root 是否和要恢复的 tombstone

    99810发布于 2020-12-18
  • 来自专栏项目实战

    项目代码清理的系统化策略:从安全验证到工程化移除

    /${tombstone.id}.json`; this.writeFile(tombstonePath, JSON.stringify(tombstone, null, 2)); } / = JSON.parse(content); this.tombstones.set(tombstoneId, tombstone); return tombstone; } = this.getTombstone(tombstoneId); if (tombstone) { tombstone.status = 'approved'; tombstone.approvedBy tombstone || tombstone.status ! tombstone.restoredAt = new Date().toISOString(); this.saveTombstoneToFile(tombstone);

    31611编辑于 2025-08-08
  • 来自专栏韩曙亮的移动开发专栏

    【Android NDK 开发】NDK CC++ 代码崩溃调试 - Tombstone 报错信息日志文件分析 ( 使用 addr2line 命令行工具查找动态库中的报错代码位置 )

    文章目录 一、从 Tombstone 报错日志中查找报错动态库 二、addr2line 命令行工具使用 64 位动态库使用的 aarch64-linux-android-addr2line.exe 工具 32 位动态库使用的 arm-linux-androideabi-addr2line.exe 工具 使用 addr2line 命令行工具分析动态库 Tombstone 报错信息日志文件被保存在了 /data 报错信息日志文件分析 ( 获取 tombstone_0X 崩溃日志信息 ) 博客 , 先获取 NDK 的报错日志信息 Tombstone 文件 ; 一、从 Tombstone 报错日志中查找报错动态库 ---- 参考 【Android NDK 开发】NDK C/C++ 代码崩溃调试 - Tombstone 报错信息日志文件分析 ( 获取 tombstone_0X 崩溃日志信息 ) 博客 , 在上述博客中 , 获取到了 Tombstone 内容如下 : *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** Build fingerprint

    2.3K10编辑于 2023-03-30
  • 来自专栏软件绿色联盟动态

    应用稳定性优化系列(二),Crash/Tombstone问题分析及定位

    继上周介绍了稳定性三大故障之一的ANR类故障后,本章继续介绍第二大类故障Crash/Tombstone及其分析定位方法。 1. Crash/Tombstone问题原因分析 2. Tombstone问题定位方法 本节主要讲解Tombstone问题的分析定位方法。 2.1 信号量分析法 信号机制是进程之间相互传递消息的一种方法,下表展示的是一些常见的信号种类。 2.2 反编译调用栈法 反编译调用栈步骤 新建一个tombstone.txt,把backtrace里面的内容写入到txt里面去; 执行脚本 . /panic.py tombstone.txt>log.txt; 更细致的调用栈可以参考stack里面的纪录; 打开log.txt之后,分析函数的调用栈,从调用栈找出逻辑关系。 通过前面输出的该进程的内存分布图,分析该地址属于哪一个.so 把该栈地址减去对应.so的基地址,就是偏移地址 把该偏移地址,放到objdump反编译的文件里面找,就能找到对应的方法 继介绍稳定性ANR类故障和Crash/Tombstone

    3.9K20编辑于 2022-03-31
  • 来自专栏PingCAP的专栏

    TiDB 海量 region 集群调优实践

    回到最开始的问题,什么是 tombstone key ? 这里也简单介绍一下。 然后将这些 key 标记为 tombstone key。这些 key 其实只是做一个标记,即所谓的 tombstone key。 其实我们也做一个回顾,当时发现在打散热点的时候,确实对整个问题有了一定的缓解,最根本原因在于处理的过程中,RocksDB 对底层的 tombstone key 做了一个 compaction,导致 tombstone [v2-3c750208ad37e05332d7c1411c7e876b_1440w.webp] 存在 tombstone key 的场景下,写操作或者是 Batch Get,只要绕过这些 tombstone key 从而避免 seek 过多的 tombstone key,就可以很彻底地避免这个问题。

    1.1K20发布于 2021-08-04
  • 来自专栏MelonTeam专栏

    浅析Android中的ThreadLocal

    . */ private static final Object TOMBSTONE = new Object(); /** * Map void put(ThreadLocal> key, Object value) { cleanUp(); // Keep track of first tombstone return; } // Go back and replace first tombstone size++; return; } // Remember first tombstone if (firstTombstone == -1 && k == TOMBSTONE) { firstTombstone = index;

    785100发布于 2018-01-04
  • 来自专栏码匠的流水账

    聊聊CRDT

    用于add,tombstone用于remove;其processCommand方法接收TwoPSetCommand,它有TwoPSet.AddCommand及TwoPSet.RemoveCommand两个子类 ,两个command分别对应doAdd及doRemove方法;doAdd要求tombstone不包含该元素并往elements添加元素;doRemove往tombstone添加元素并从elements移除元素 tombstone.contains(element)); } ​ private synchronized void prepareRemove(E value) { (removes); } ​ //...... } 这里ORSet使用了两个Set来实现,其中elements用于add,tombstone用于remove;其processCommand ;doRemove方法首先执行prepareRemove找出需要移除的element集合removes,然后从elements移除removes并往tombstone添加removes 小结 CRDT是

    4.8K40发布于 2019-05-08
  • 来自专栏向治洪

    android Handler机制之ThreadLocal详解

    > key, Object value) { cleanUp(); // Keep track of first tombstone. return; } // Go back and replace first tombstone size++; return; } // Remember first tombstone if (firstTombstone == -1 && k == TOMBSTONE) { firstTombstone = index; table[index] = TOMBSTONE; table[index + 1] = null; tombstones

    1.5K90发布于 2018-02-05
  • 来自专栏码匠的流水账

    聊聊CRDT

    tombstone.contains(value) && elements.add(value); } private boolean doRemove(E value) { 用于add,tombstone用于remove;其processCommand方法接收TwoPSetCommand,它有TwoPSet.AddCommand及TwoPSet.RemoveCommand两个子类 ,两个command分别对应doAdd及doRemove方法;doAdd要求tombstone不包含该元素并往elements添加元素;doRemove往tombstone添加元素并从elements移除元素 (removes); } //...... } 这里ORSet使用了两个Set来实现,其中elements用于add,tombstone用于remove;其processCommand ;doRemove方法首先执行prepareRemove找出需要移除的element集合removes,然后从elements移除removes并往tombstone添加removes 小结 CRDT是

    90830发布于 2019-05-15
  • 来自专栏算法微时光

    Android之xCrash介绍

    xCrash 能在 App 进程崩溃或 ANR 时,在你指定的目录中生成一个 tombstone 文件(格式与安卓系统的 tombstone 文件类似)。 base) { super.attachBaseContext(base); // 默认初始化 XCrash.init(this); } } Tombstone

    1.3K20编辑于 2021-12-06
  • 来自专栏python3

    Cassandra基本介绍(3) - 架

    你可以通过修改cassandra.yaml中 memtable_flush_queue_size的值来改变队列的长度 新的memtable在内存中创建 删除是一种特殊write,称之为”tombstone 每一个write包含一个timestamp Partition被分割到多个SSTable 新的memtable在内存中创建 通过compaction合并,只保存最新的timestamp 删除被标记为tombstone

    92210发布于 2020-01-08
  • 来自专栏本体研究院

    本体技术视点 | 一文读懂Substrate的合约机制(二)

    合约在不够支付租金后,清理存储,进入 tombstone 状态; 4. 检测合约是否要进入 tombstone 是需要由外部交易触发,因此成功举报的有奖励,出块人优先; 具体的实现由下面几个参数控制: pub trait Trait: frame_system::Trait { /// 合约进入tombstone状态时所需要的的最小充值余额 type TombstoneDeposit: Get<BalanceOf<Self>>; /// 存储大小起步值 >>; // 豁免单个byte的存储需要的余额 type RentDepositOffset: Get<BalanceOf<Self>>; /// 奖励给成功举报使某个合约进入tombstone type SurchargeReward: Get<BalanceOf<Self>>; /// 系统给出块人举报某合约要进入tombstone状态的优先权,对于普通用户需要滞后的区块偏移量

    74720发布于 2020-12-18
  • 来自专栏Android 研究

    Android Handler机制2之ThreadLocal

    clean = index; } cleanUp()方法只做了一件事,就是把失效的键放上TOMBSTONE去占位,饭后释放它的值。 -联想clenUp()的作用,它都已经把失效键放上TOMBSTONE,然后肯定是想办法干掉这些TOMBSTONE。 cleanUp()方法只做了一件事,就是把失效的键放上TOMBSTONE去占位,然后释放它的值。那么rehash()是干什么的其实已经很显而易见了: 从字面意思来也知道是重新规划table的大小。 联想cleanUp()的作用,它都已经把失效键放上TOMBSTONE,接下来呢?显然是想办法干掉这些TOMBSTONE,还我内存一个朗朗乾坤喽。 // contains a tombstone...

    1.1K10发布于 2018-08-30
  • 来自专栏全栈程序员必看

    缩容是什么意思_梯度压缩

    :[] ShowUptime:false DisplayMode:default Operation:StartOperation} The component `tikv` will become tombstone reload prometheus-9090.service Scaled cluster `cluster-default` in successfully 三、销毁节点 Scale-in后,节点状态是Tombstone

    38710编辑于 2022-11-09
  • 来自专栏Kubernetes

    Kubernetes Endpoints Controller源码分析

    如果该pod是tombstone object(final state is unrecorded),则将其转换成v1.pod后,再调用addPod。 相比正常的Pod,就是多了一步:从tombstone到v1.pod的转换。 tombstone, ok := obj.(cache.DeletedFinalStateUnknown) if ! ok { utilruntime.HandleError(fmt.Errorf("Couldn't get object from tombstone %#v", obj)) return } pod, ok := tombstone.Obj.

    3K20发布于 2018-11-06
领券