首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在 Linux 上创建并调试转储文件

崩溃转储、内存转储、核心转储、系统转储……这些全都会产生同样产物:一个包含了当应用崩溃时,在那个特定时刻应用内存状态文件。...这是一篇指导文章,你可以通过克隆示例应用仓库来跟随学习: git clone https://github.com/hANSIc99/core_dump_example.git 信号如何关联到转储 信号是操作系统和用户应用之间进程间通讯...并通过调用 abort() 来报告 SIGIOT:这个信号在 Fedora 上已经过时,过去在 PDP-11 上用 abort() 时触发,现在映射到 SIGABRT 创建转储文件 导航到 core_dump_example...(libc.so.6) #2 0x00007f4bbaf664af __libc_message (libc.so.6) #3 0x00007f4bbaf6da9c malloc_printerr (...libc.so.6) #4 0x00007f4bbaf6f49c _int_free (libc.so.6) #5 0x000000000040120e n/a (/home/stephan/Dokumente

3.3K30

Android 平台 Native 代码崩溃捕获机制及实现

三、信号机制 1.程序奔溃 在Unix-like系统中,所有的崩溃都是编程错误或者硬件错误相关,系统遇到不可恢复错误时会触发崩溃机制让程序退出,如除零、段地址错误等。...异常发生时,CPU通过异常中断方式,触发异常处理流程。不同处理器,有不同异常中断类型和中断处理方式。 linux把这些中断处理,统一为信号量,可以注册信号量向量进行处理。...能够知道崩溃pc,就能知道崩溃时执行是那条指令。...这里有一个前提:我们认为crash线程就是捕获到信号线程,虽然这在SIGABRT下不一定可靠。有了这个认知,接下来就好办了。...(_ZL15__pthread_startPv+30) #21 pc 0001135f /system/lib/libc.so (__start_thread+6) 单凭堆栈根本看不出来是什么问题,

5.3K116
您找到你想要的搜索结果了吗?
是的
没有找到

详解cn.sample.mnn.detect Alibc: Fatal signal 11 (SIGSEGV), code 1 (SEGV_MAPERR),

详解 cn.sample.mnn.detect A/libc: Fatal signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0x0 in tid...这个错误通常与内存访问相关,并且是一个严重错误,可能导致应用崩溃。...错误背景和原因该错误消息表明应用程序发生了一个严重信号 11 (SIGSEGV) 错误,错误代码是 1 (SEGV_MAPERR)。...通过打印相关变量值和跟踪代码执行路径,可以帮助你找到引发错误具体代码行。参考文档和社区支持:查阅相关技术文档和论坛,寻找针对具体情况解决方案或者在开发者社区中寻求帮助。...这种错误通常是由于在运行时发生了某种异常或错误,引发了 MNN 库崩溃并触发了 SIGSEGV(Segmentation Violation)信号

38610

Android Tombstone 分析

此外,tombstone文件还会详细记录崩溃现场情况,包括一系列堆栈调用信息,帮助开发人员分析问题并进行调试。...0xdeadbaad in tid 244 (mediaserver) 这里信息说明出现进程 Crash 原因是因为程序产生了段错误信号,访问了非法内存空间,而访问非法地址是 0xdeadbaad...,但是需要注意是它调用顺序是从下向上执行(#XX pc -->#00 pc),通过这些函数调用关系,我们就可以大概定位出问题发生地方,在本次 tombstone 日志中,我们通过 I/DEBUG...4.一些分析工具 虽然通过 tombstone 日志文件我们就可以大致定位出引发 crash 代码位置,但是通过借助一些分析工具,可以大大提高工作效率和准确性,下面就来介绍以下这些工具。...这个工具能自动分析 tombstone 文件, 能将崩溃调用内存地址和 c++ 代码一行一行对应起来. 它使用方法为 .

90310

Android tombstone文件是如何生成

因为Kernel Crash整个系统直接就panic了,内核会打印出对应call trace,对于Java层代码出错也会有对应异常抛出。所以墓碑主要是给Native层进程准备。...当CPU去访问一个虚拟地址,肯定会经过MMU去查对应虚实关系 一旦虚拟地址是非法,MMU硬件单元则会触发异常,CPU则去异常向量表执行对应异常 经过处理后Linux内核对userspace异常则通过信号方式通知给对应进程...信号处理函数安装一般会在glibc中做,glibc会对所有的通用信号做默认处理。...回到android系统中,当一个Native进程触发了NULL指针,首先CPU会收到对应异常,然后去执行异常,接着会通过发生SIGSEGV信号信号处理函数则会去处理信号,处理信号过程中,则就会保存进程现场...tid 23051 (.tencent.qqlive), pid 23051 (.tencent.qqlive) 信号num,比如信号11代表是SIGSEGV 信号code,SEGV_MAPERR

5.3K20

Android基础开发实践:如何分析Native Crash

Native Crash类型 从常见调用栈中,我们也可以看到Native Crash一般类型: 1. Abort:Abort一般是Runtime通过libc主动进行中止操作; 2....这个线程也是通过pthread_create创建,运行起来之后,会一直等待信号到来: ? 以上代码可以看出,只处理两种类型信号,一种是SIGQUIT,一种是SIGUSR1。...Runtime::Abort产生SIGABRT信号: ?...文件时,需要注意一点是,如果是SIGABRT信号,一般会有一条Abort Message,这条信息基本上可以说明该问题出现原因,比如jni参数空指针之类(SIGABRT信号一般出现在assert失败时产生...对于root手机(同时建议通过setenforce 0关闭selinux,防止安全设置禁用某些权限),以上4步可以具体为: 1. push gdbserver到手机:adb push ndk-bundle

17.1K153

JVM致命错误日志(hs_err_pid.log)分析

致命错误出现时候,JVM 生成了 hs_err_pid.log 这样文件,其中往往包含了虚拟机崩溃原因重要信息。...默认情况下文件是创建在工作目录下(如果没权限创建的话 JVM 会尝试把文件写到/tmp 这样临时目录下面去),当然,文件格式和路径也可以通过参数指定,比如: 1 java -XX:ErrorFile...=/var/log/java/java_error%p.log 这个文件将包括: 触发致命错误操作异常或者信号; 版本和配置信息; 触发致命异常线程详细信息和线程栈; 当前运行线程列表和它们状态...: SIGSEGV 是信号名称 0xb 是信号码 pc=0x03568cf4 指的是程序计数器值 pid=16819 是进程号 tid=3073346448 是线程号 如果你对 JVM 有了解,应该不会对这些东西陌生...信号句柄。对于 Linux 下信号机制,参阅 wiki 百科, 链接 。

1.3K20

JVM 致命错误日志(hs_err_pid.log)解读

致命错误出现时候,JVM 生成了 hs_err_pid.log 这样文件,其中往往包含了虚拟机崩溃原因重要信息。...默认情况下文件是创建在工作目录下(如果没权限创建的话 JVM 会尝试把文件写到/tmp 这样临时目录下面去),当然,文件格式和路径也可以通过参数指定,比如: java -XX:ErrorFile=/...var/log/java/java_error%p.log 这个文件将包括: 触发致命错误操作异常或者信号; 版本和配置信息; 触发致命异常线程详细信息和线程栈; 当前运行线程列表和它们状态;...是信号名称 0xb 是信号码 pc=0x03568cf4 指的是程序计数器值 pid=16819 是进程号 tid=3073346448 是线程号 如果你对 JVM 有了解,应该不会对这些东西陌生。...信号句柄。对于 Linux 下信号机制,参阅 wiki 百科,链接。

1.7K20

iOS你不知道事--Crash分析

Crashes 对应app,就是当前app最新一版本crash log ,并且是解析过,可以根据crash 栈 等相关信息 ,尤其是程序代码级别的 有超链接,一键可以直接跳转到程序崩溃相关代码,...所有Mach异常都在host层被ux_exception转换为相应Unix信号,并通过threadsignal将信号投递到出错线程。...那么就可以通过注册相应函数来捕获信号.到达Hook效果 + (void)installUncaughtSignalExceptionHandler{ NSSetUncaughtExceptionHandler...// 或者直接用代码,输入这个崩溃信息,以便在console中进一步分析错误原因 // NSLog(@"crash: %@", exception); NSString * _...signal 函数拦截不到解决方式 在debug模式下,如果你触发了崩溃,那么应用会直接崩溃到主函数,断点都没用,此时没有任何log信息显示出来,如果你想看log信息的话,你需要在lldb中,拿SIGABRT

1.4K10

内核转储设置

核心转储如何产生 上面说当程序运行过程中异常终止或崩溃时会发生 core dump,但还没说到什么具体情景程序会发生异常终止或崩溃。...如果我们信号均是采用默认操作,那么,以下列出几种信号,它们在发生时会产生 core dump: Signal Action Comment 说明 SIGABRT Core Abort signal from.../lib/aarch64-linux-gnu/libc.so.6. Use the "info sharedlibrary" command to see the complete listing....a=NULL; 6 *a=0x1; 7 return 0; 8 } (gdb) 可以看到,在GDB启动后,已经打印出test.c6行收到了SIGSEGV信号,...使用list命令可以查看附近代码。 在专用目录生成内核转储 core文件默认会在当前目录生成,大多数时候,我们希望固定core文件生成位置。

1.8K40

惊心动魄,Linux被死锁阵痛后破门实录

为了防止死锁再出现,我总结了下死锁原因以及常见一些方法,希望对大家有帮助。 在计算机系统中有很多一次只能由一个进程使用资源,如打印机,磁带机,一个文件I节点等。...系统发生死锁现象不仅浪费大量系统资源,甚至导致整个系统崩溃,带来灾难性后果。所以,对于死锁问题在理论上和技术上都必须给予高度重视。...,可以检查程序状态; 4 当程序 crash 时,可以检查 core 文件; 5 可以修改程序错误,并重新运行程序; 6 可以动态监视程序中变量值; 7 可以单步执行代码,观察程序运行状态。...gdb 程序调试对象是可执行文件或者进程,而不是程序代码文件。然而,并不是所有的可执行文件都可以用 gdb 调试。...调试信息包含程序里每个变量类型和在可执行文件里地址映射以及源代码行号。gdb 利用这些信息使源代码和机器码相关联。

1.1K20

HDR关键技术:HEVCH.265编码方案

HEVC视频编码研究者通常更多关注视频信号容器属性,而不是视频编解码器及其参数,编解码器通常被当作“黑箱”来使用,它通过临时压缩,变为用于传输视频信号,然后由解码器来解码和重新渲染为原始视频信号表示...因此,CCP是编解码器内部对AVC或HEVC编码之前应用于主信号通常外部色差导出内部替代方案,然后在AVC或HEVC解码之后通过逆操作处理得到原始信号近似。...内所有可用量化代码级别,或者被缩放到某个子集用以提供足够用于信号负脉冲空间和用于信号过冲空间,用于存储通过从滤波器或编解码器量化产生噪声。...第二类基于调制原理,并使用两个层(参见[6],[7])。基础层是SDR视频,附加层包含调制信息。在解码器侧,将解码LDR内容乘以解码调制比以重建HDR内容。...在编码端,调制信号和SDR信号都可以(均由线性光输入HDR信号产生)通过两个不同传递函数被映射到非线性表示。必须使用逆映射函数fSDR和fModul在解码器侧反转这些操作。

6.7K32

实现视频和音频零延迟是标准零和博弈

在视频矩阵处切换至UTP输入和输出,即使电缆未传送IP信号,AV集成商也可以使用建筑物中现有的铜线Cat5e和Cat6布线,但即使铜线Cat6布线也限于100m传输距离。...考虑到H.264(AVC)和H.265(HEVC)在FPGA编码方面的进展,流行业中一些人可能会争辩说,逐帧或I帧avc或hevc可能适用于这些零帧延迟用例,但专业AV集成商认为标准流视频编解码器不符合用例要求...岩崎继续说:“我们决定采用10Gbps AV解决方案,因为[a] 4K信号具有18GB,”他指的是未经压缩4K60 8位视频信号在14Gbps范围内事实,但考虑到HDMI通过HDMI电缆传输4K60...同样适用于6Gbps4K30。我们仅压缩高于10Gbps原始数据速率信号,例如4K60。而且,我们只压缩适合10G以太网所需最小压缩量。”...Iwasaki认为:“如果客户希望具有针对这些信号记录或网络流功能,我们将使用H.264 / 265,因为它可以通过高压缩率来减少信号带宽。”

1.4K30

iOS-底层原理36:内存优化(一) 野指针探测

,野指针崩溃大部分是硬件异常 而在处理异常时,需要关注两个概念 Mach异常:Mach层捕获 UNIX信号:BSD层获取 iOS中POSIX API就是通过Mach之上BSD层实现,如下图所示...image 1、硬件异常流程:硬件异常 -> Mach异常 -> UNIX信号 2、软件异常流程:软件异常 -> UNIX信号 Mach异常与UNIX信号转换 下面是Mach异常 与 UNIX信号 转换关系代码...SIGABRT 调用 abort() 产生,通过 pthread_kill() 发送。 SIGPIPE 管道破裂。通常在进程间通信产生。...体验来说是非常致命 而野指针随机性问题大致可以分为两类: 1、跑不进出错逻辑,执行不到出错代码,这种可以通过提高测试场景覆盖率来解决 2、跑进有问题逻辑,但是野指针指向地址并不一定会导致crash...同时为了防止系统内存过快消耗(因为要保留内存),需要在保留内存大于一定值时释放一部分,防止被系统杀死,同时,在收到系统内存警告时,也需要释放一部分内存 3、发生crash时,得到崩溃信息有限,不利于问题排查

2K31

获取 NodeJS 程序退出码

C 方式,也可以通过process.exit()来执行退出。...在其他情况下使用以下状态代码: 1 未捕获致命异常:存在未捕获异常,并且其没有被域或 'uncaughtException' 事件句柄处理。...6 非函数内部异常句柄:存在未捕获异常,但内部致命异常句柄不知何故设置为非函数,无法调用。 7 内部异常句柄运行时失败:存在未捕获异常,并且内部致命异常句柄函数本身在尝试处理时抛出错误。...>128 信号退出:如果 NodeJS 收到致命信号,例如 SIGKILL 或 SIGHUP,则其退出码将是 128 加上信号代码值。...这是标准 POSIX 实践,因为退出码被定义为 7 位整数,并且信号退出设置高位,然后包含信号代码值。 例如,信号 SIGABRT 值是 6,因此预期退出码将是 128 + 6 或 134。

3.4K10

技术解码 | 内存问题分析与定位

如果某些代码路径特别是错误处理上漏了一个release,即导致内存泄漏。而RAII可以通过对象构造和析构来自动增减引用计数,即使出现exception场景,也可以保证正确引用计数。...内存地址不对齐 (aligment) 例如,把char 强转成int , 再解引用,可能导致crash 线程安全中内存问题 有一些常见误区: 通过空指针调用对象方法一定崩溃吗?...不一定崩溃。如果成员函数是实函数,又没有直接或间接访问成员变量,则不会发生崩溃。这种情况下,普通成员函数与静态成员函数类似。 通过野指针调用对象方法一定崩溃吗? 不一定崩溃。...如果crash上报系统有崩溃现场完善日志,通过日志分析原因是比较容易。...单指令调试: 溯因 通过还原调用栈、反编译、调试验证等,可以理清楚崩溃现场,找到crash直接原因。但是问题根本原因可能还未暴露。

4K21

【团队分享】刀锋铁骑:常见Android Native崩溃及错误原因

2、Native Crash 通过NDK,使用C/C++开发,导致进程收到错误信号,发生Crash,Android 5.0之前进程直接退出(闪退) , Android 5.0之后会弹“程序已崩溃对话框...在本文中,SIGABRT(中止进程)属于这种信号。 用户(手贱)或第三方App(恶意)通过kill-信号 pid方式给错误进程发送,这时signal中si_code会小于0。...野指针造成内存破坏问题,有时候光看代码很难查找,通过代码分析工具也很难找出,只有通过专业内存检测工具,才能发现这类bug。...6、缓冲区溢出 代码示例 char szBuffer[10]; //由于函数栈是从高地址往低地址创建,而sprintf是从低地址往高地址打印字符, //如果超出了缓冲区大小,函数栈帧会被破坏,在函数返回时会跳转到未知地址上...如果不是黑客故意攻击,那么最终函数调用很可能会跳转到无法读写内存区域,产生段错误信号SIGSEGV或SIGABRT,造成程序崩溃,并生成core文件。

4.1K62

扫码

添加站长 进交流群

领取专属 10元无门槛券

手把手带您无忧上云

扫码加入开发者社群

热门标签

活动推荐

    运营活动

    活动名称
    广告关闭
    领券