【kudu】使用google breakpad分析kudu core文件

本文介绍了如何下载、编译和安装Breakpad库,用于在Kudu遇到崩溃时生成小型转储文件。小型转储包含了调试信息,如线程、堆栈、共享库等。通过转换小型转储为核心文件,可以使用GDB进行分析。Kudu开发人员可以使用内置的minidump工具,并通过发送USR1信号强制生成小型转储。
摘要由CSDN通过智能技术生成

一、前言

二、安装下载

breakpad 网址:https://chromium.googlesource.com/breakpad/breakpad

  1. 下载源码:
git clone https://chromium.googlesource.com/breakpad/breakpad
  1. 编译:
./configure && make
  1. install the built libraries
make install

这里会有一个报错,make完这里会报错breakpad/src/third_party/lss/linux_syscall_support.h没有这个文件:

该文件可在https://chromium.googlesource.com/linux-syscall-support/下载,并放到breakpad/src/third_party/lss/中。

三、分析

Kudu 使用 Google breakpad 库在 Kudu 遇到崩溃时生成小型转储。小型转储文件包含有关崩溃进程的重要调试信息,包括加载的共享库及其版本、崩溃时运行的线程列表、处理器寄存器的状态以及每个线程的堆栈内存副本,以及 CPU 和操作系统版本信息。这些小型转储通常只有几 MB 大小,即使禁用核心转储生成也会生成。目前,只能在 Linux 部署上生成小型转储。

默认情况下,Kudu 将其小型转储存储在名为minidumps. 这个位置可以通过设置–minidump_path标志来定制 。Kudu 将在删除旧的之前只保留一定数量的小型转储,以避免用小型转储文件填满磁盘。可以通过设置–max_minidumpsgflag来控制将保留的最大小型转储数量。

小型转储包含特定于创建它们的二进制文件的信息,因此如果无法访问崩溃的确切二进制文件或非常相似的二进制文件,则没有用。

Kudu 开发人员可以在他们的开发环境中访问 minidump 工具,因为它们是作为 Kudu 第三方构建的一部分安装的。它们可以在 Kudu 开发环境下找到uninstrumented/bin。例如, thirdparty/installed/uninstrumented/bin/minidump-2-core。

如果启用了小型转储,则可以强制 Kudu 创建小型转储而不终止进程。为此,请USR1向kudu-tserverorkudu-master进程发送信号 。例如:

使用 GNU 调试器查看小型转储堆栈跟踪
尽管小型转储不包含堆信息,但它确实包含线程和堆栈信息。您可以将小型转储转换为核心文件以使用 GDB 进行查看。

要将小型转储(.dmp文件)转换为核心文件:

minidump-2-core -o 02cb4a97-ee37-6454-73a9d9cb-590c7dde.core \
02cb4a97-ee37-6454-73a9d9cb-590c7dde.dmp

要使用 GDB 查看核心文件(在parcel 部署上):

gdb /opt/cloudera/parcels/KUDU/lib/kudu/sbin-release/kudu-master \
-s /opt/cloudera/parcels/KUDU/lib/debug/usr/lib/kudu/sbin-release/kudu-master.debug \
02cb4a97-ee37-6454-73a9d9cb-590c7dde.core
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值