breakpad是一组用于实现崩溃报告系统的客户端和服务器组件。Chromium的Breakpad是目前Native崩溃捕获中最成熟的方案。它是一套完整的工具集,从Crash的捕获到Crash的dump,都提供了相对应的工具。它记录了崩溃时的.dump文件,无论我们是在本地或者发送到服务器端,都可以用相对应的工具来解析.dump文件帮助我们查找C和C++堆栈踪迹。
我们知道Java崩溃是在Java代码中出现了未捕获异常,导致程序异常退出,常见的异常有:NPE、OOM、ArrayIndexOutOfBoundsException、IllegalStateException、ConcurrentModificationException等等。 还有一类崩溃,也是我们不得不关注,那就是Native层崩溃,这类崩溃不像Java层崩溃那样比较清晰的看出堆栈信息以及具体的崩溃。每当遇到是都要查找分析,写这篇的目的是帮助自己做下记录,也希望能帮到有类似困扰的你,下面我们开始一起学习实践吧。 本文学习实践的demo以张绍文《Android开发高手课》中的例子进行。
https://jackwish.net/2015/introduction-of-google-breakpad.html
Google breakpad是一个跨平台的崩溃转储和分析框架和工具集合。 Breakpad由三个主要组件:
一、前情回顾 最近把公司的一个视频处理程序更新了一个版本,准备提交测试的发现了崩溃的情况。这个程序采用Qt和ffmpeg技术栈开发,主要用于对视频进行渲染拼接处理,在Windows和mac两个平台同时进行发布。在windows上测试完一切正常,然而就在我以为一切大功告成的时候,测试的同事直接给我来了个当头棒喝,程序崩溃了!没有道理啊,同一套代码在Windows上安然无恙,在Mac上为何直接崩溃?好消息是程序在崩溃的时候保存了dump文件。 📷 这得感谢前段时间集成的Google Breakpa
作为一名程序,最头疼的莫过于项目上线后收到程序崩溃的通知,若能够在手头重现出该问题,那相对来说项目能够及时的修复并更新;如果无法重现外网崩溃的问题,那就十分的"头疼"了。要是能够实时的采集到项目的崩溃信息,那该多好啊!这并不是一种什么奢望,目前就有现成的技术解决方案。这段时间,我一直在帮项目开发程序崩溃的采集功能,其中用到的技术方案就是 Google 开发的 Breakpad。
最近在进行词典笔的离线解码器测试,遇到了各种内存泄漏以及崩溃问题,为了协助开发定位问题,用到了Valgrind和BreakPad工具,下面就简单介绍一下这两个小工具吧。
https://time.geekbang.org/column/article/70602
作者简介:黄权隆,Cloudera研发工程师,Apache Impala PMC & Comitter,毕业于北大计算机系网络所数据库实验室,曾就职于Hulu大数据基础架构团队,负责大数据系统的维护和二次开发,主要负责Impala和HBase方向。现就职于Cloudera,专注于Impala开发。
现在大部分应用都会有Java层的崩溃日志收集机制,一般就是程序crash后,展示一个上报界面,用户点击就上传了。 但是Native程序crash了,很少有做处理的,几个方面原因:
项目中需要单独接入Breakpad收集native 的crash, 并且Breakpad 在跨平台中也会被经常使用到,这里记录下Breakpad的编译过程。
根据当前帧的eip(x86)来调用 CodeModules::GetModuleForAddress()返回当前frame所属的模块信息
在主服务器下创建fate-mongo.yaml,并执行以下脚本(注意根据自己的机器名称修改constraints属性)
3.native层的崩溃收集可以使用编译好的breakpad.so。(参考 https://github.com/yinyinnie/breakpad-for-android.git)
在breakpad: Native crash 日志收集工具一文中,讲述了如何使用breadpad做NativeCrash日志收集。在做深入定制化过程中,发现需要对最终dump出来的文件做深入了解。然而这个dump文件是一个二进制文件。
Google Chrome早就支持了headless模式,但一般都是在Linux上运行,而我则习惯于在WSL上开发,折腾了好久终于找到了可以在WSL上跑headless模式的方法。
在breakpad: Native crash 日志收集工具中,详细介绍了breadpad的使用流程,但是在实际操作过程中,发现有如下问题需要解决:
NebulaGraph 3.3.0 支持了 GET SUBGRAPH 和 GetNeighbors 的点过滤、引入了大量性能优化,同时,开始对无 tag 顶点的支持默认关闭。
顾翔老师开发的bugreport2script开源了,希望大家多提建议。文件在https://github.com/xianggu625/bug2testscript,
Native Crash常常发生在带有Jni代码的APP中,或者系统的Native服务中。作为比较难分析的一类问题,Native Crash其实还是有较多的方法去定位。
上两篇介绍了下载源码和编译源码,这次主要介绍chromium的源码目录结构,我也是通过源码和官网结合来跟大家说,如果有说的不准确的,欢迎交流。 另外,官网的不一定准确,他们其实也很懒,所以最主要还是靠自己。官网只能作为一个参考。 Chromium结构相对两年前变化很大。目录结构依然很清晰,主要有三个部分(不包括其他的库):浏览器,渲染器,webkit。浏览器是主要的进程,代表所有的UI和I / O。渲染通常是每个tab页的子过程,是由浏览器驱动。Webkit做布局和渲染。 简单介绍解决方案
log4cplus是C++编写的开源的日志系统,前身是java编写的log4j系统,受Apache Software License保护,作者是Tad E. Smith。
根据数据体量,结合集群各节点的CPU、内存、磁盘的表现,合理优化设置kudu参数,让集群飞起来~
虽然 B/S 是目前开发的主流,但是 C/S 仍然有很大的市场需求。受限于浏览器的沙盒限制,网页应用无法满足某些场景下的使用需求,而桌面应用可以读写本地文件、调用更多系统资源,再加上 Web 开发的低成本、高效率的优势,这种跨平台方式越来越受到开发者的喜爱。
本文地址:segmentfault.com/a/1190000021376934
虽然B/S是目前开发的主流,但是C/S仍然有很大的市场需求。受限于浏览器的沙盒限制,网页应用无法满足某些场景下的使用需求,而桌面应用可以读写本地文件、调用更多系统资源,再加上Web开发的低成本、高效率的优势,这种跨平台方式越来越受到开发者的喜爱。
官方地址https://openvpn.net/client/client-connect-vpn-for-windows/
内容源于:https://docs.sentry.io/platforms/javascript/guides/vue/
UI框架:Foundation,Boostrap,Pure,EasyUI,Polymer
Hacker News:非常棒的针对编程的链接聚合网站 Programming reddit:同上 MSDN:微软相关的官方技术集中地,主要是文档类 infoq:企业级应用,关注软件开发领域 OSChina:开源技术社区,开源方面做的不错哦 cnblogs,51cto,csdn:常见的技术社区,各有专长 stackoverflow:IT技术问答网站 GitHub:全球最大的源代码管理平台,很多知名开源项目都在上面,如Linux内核, OpenStack等免费的it电子书:http://it-ebooks.info/ DevStore:开发者服务商店
本文是『张涛的NDK之旅』,本来很早以前就有很多读者希望我能写一些关于MDK的文章,但是由于我本身对NDK不熟悉,所以找来了同事张涛的文章。欢迎大家关注他的博客——开源实验室(点击原文链接可以直接访问)
本篇文章主要记录如何从Chromium中提取Base库,方便后续的学习和使用,同时抛砖引玉,希望带给各位一些启发和帮助。
之前的两篇文章主要介绍了音视频SDK中的线程设计和消息队列,其实对那些想从Android转向音视频开发的同学来说,NDK方面的知识是不得不提的“前置条件”,因为音视频开发的主要是C/C++开发,也许有些同学会反驳,Android不是提供了很多音视频相关的工具吗?比如MediaCodec、MediaExtractor等等,且不说这些版本的兼容性,单单是这些工具的格式支持度如何呢?如果遇到不支持的音视频格式怎么办呢?这些工具我们应该学会怎么使用,但是它并不能支持我们深入学习音视频技术,很多跨平台和使用广泛的库都是C/C++的,所以NDK开发是音视频技术学习的“门槛”,本文的目的就是带你从0开始开始学习NDK相关的知识点。
在开源软件盛行的今天,很多知名的C++国产软件都用到了一些大型C/C++开源库,比如暴风音影使用了多媒体处理开源库FFmpeg、腾讯会议使用了实时音视频处理开源库Webrtc、PC版微信使用了Chromium嵌入式框架开源库CEF等。今天我们就来介绍一下日常工作中常用的C/C++开源库,给大家提供一个借鉴和参考。
一、背景 在Android平台,native crash一直是crash里的大头。native crash具有上下文不全、出错信息模糊、难以捕捉等特点,比java crash更难修复。所以一个合格的异常捕获组件也要能达到以下目的: 支持在crash时进行更多扩展操作,如: 打印logcat和应用日志 上报crash次数 对不同的crash做不同的恢复措施 可以针对业务不断改进和适应 二、现有的方案 其实3个方案在Android平台的实现原理都是基本一致的,综合考虑,可以基于coffeecatch改进。
之前做热修复的时候研究过 Application 的启动原理。项目中也做过一些启动优化。
项目中的服务集成了springboot-admin做服务监控,最近一直收到邮件告警,提示es出错。错误信息如下:
还是容器里编译比较快。提供一份在容器里成功编译出来 impalad 的日志。 docker run --cap-add SYS_TIME --interactive --tty --name impala-dev -p 25000:25000 -p 25010:25010 -p 25020:25020 ubuntu:16.04 bash root@825575f55308:/# ls bin boot dev etc home lib lib64 media mnt opt proc
zookeeper下载:http://mirror.bit.edu.cn/apache/zookeeper/
安装 JDK 会自动创建一个名为 jdk–17.interim.update.patch.
在不同操作系统之间传输文件是日常工作中常见的任务之一。scp(Secure Copy)是一种安全的文件传输协议,可以在不同的操作系统之间进行文件复制,并保证数据的安全性。本文将介绍如何使用scp命令在Windows系统和Linux系统之间相互传输文件。
在上一篇文章中我们概括了k8s集群网络大致包含哪些方面,包括服务在网络中的负载均衡方式(iptable和ipvs),以及underlay和overlay的组网。在这里我们介绍宿主内的容器网络,当然我们还是以docker环境为例,介绍docker宿主环境中的容器网络。
Linux 内核 “社区” 对待安全的优先级并不高,虽然经历了 2000 年代的多次大规模漏洞利用事件但并没有让 Linus Torvalds 本人改变 "A bug is bug" 的哲学,由于 Linux 内核的安全问题逐渐影响到了 Android 和 IoT 设备,一次 华盛顿邮报的曝光促使了 KSPP(Linux 内核自防护项目)的成立,KSPP 是由 Linux 基金会旗下的 CII(基础架构联盟)管理,其吸纳了来自诸多大厂商(Google, RedHat, Intel, ARM 等)的工程师进
下载 [root@h101 keepalived]# wget http://www.keepalived.org/software/keepalived-1.2.19.tar.gz --2016-03-02 15:26:58-- http://www.keepalived.org/software/keepalived-1.2.19.tar.gz Resolving www.keepalived.org... 37.59.63.157, 2001:41d0:8:7a9d::1 Connecting t
安装地址: https://pypi.python.org/pypi/setuptools#id9
虚拟机(Virtual Machine)指通过软件模拟的具有完整硬件系统功能、运行在完全隔离环境中的完整计算机系统。常用虚拟机软件:
我们在Linux中使用自带的gcc和g++编译器进行编译的程序是针对X86架构的。而我们开发板大多都是ARM或者其他架构的开发板,我们就需要编译出针对其他架构的程序。
领取专属 10元无门槛券
手把手带您无忧上云