MySQL 除錯 初試breakpad

2021-09-23 18:56:31 字數 2778 閱讀 8665

breakpad是google開源的乙個崩潰報告工具,按照其聲稱,生成的core file相當小,近日開始調研將其整合到我們線上mysql的可行性,以下是初步的安裝嘗試

1. checkout **

svn co   breakpad

2. configure && make && make install

3.暴力cp src/client/linux/libbreakpad_client.a

4.測試程式

#include 「client/linux/handler/exception_handler.h」

#include

static bool dumpcallback(const google_breakpad::minidumpdescriptor &md,

void* context,

bool succeeded)

void crash()

int main()

g++ test.cc -o test -g  -i src/  -lbreakpad_client  -lpthread

$./test

dump path: /tmp/19b5df9c-6935-3923-125a8f20-21844c05.dmp

segmentation fault

breakpad包含了幾個工具:

a.dump_syms用於產生程式的符號資訊

dump_syms ./tesr  > test.sym

$dump_syms ./test  > test.sym

$head -n1 test.sym

module linux x86_64 ce30bab82b8b4b73d3a169c97011971d0 test

mkdir -p ./symbols/test/ce30bab82b8b4b73d3a169c97011971d0

mv test.sym ./symbols/test/ce30bab82b8b4b73d3a169c97011971d0/

b.minidump_stackwalk  用於分析產生的dmp檔案,輸出堆疊,cpu,os等資訊

例如crash reason:  sigse**

crash address: 0x0

thread 0 (crashed)

0  test!crash [test.cc : 15 + 0x4]

rbx = 0x00007fffbf45a4b0   r12 = 0x00000000004015e0

r13 = 0x00007fffbf45a5d0   r14 = 0x0000000000000000

r15 = 0x0000000000000000   rip = 0x000000000040170d

rsp = 0x00007fffbf45a430   rbp = 0x00007fffbf45a430

found by: given as instruction pointer in context

1  test!main [test.cc : 22 + 0x4]

rbx = 0x00007fffbf45a4b0   r12 = 0x00000000004015e0

r13 = 0x00007fffbf45a5d0   r14 = 0x0000000000000000

r15 = 0x0000000000000000   rip = 0x00000000004017fc

rsp = 0x00007fffbf45a440   rbp = 0x00007fffbf45a4f0

found by: call frame info

2  libc-2.12.so + 0x1ec9c

rbx = 0x0000000000000000   r12 = 0x00000000004015e0

r13 = 0x00007fffbf45a5d0   r14 = 0x0000000000000000

r15 = 0x0000000000000000   rip = 0x000000388881ec9d

rsp = 0x00007fffbf45a500   rbp = 0x0000000000000000

found by: call frame info

3  test!crash [test.cc : 16 + 0x1]

rip = 0x0000000000401715   rsp = 0x00007fffbf45a520

found by: stack scanning

loaded modules:

0x00400000 – 0x00410fff  test  ???  (main)

0x3888000000 – 0x388801ffff  ld-2.12.so  ???

0x3888800000 – 0x3888b8bfff  libc-2.12.so  ???

0x3888c00000 – 0x3888e18fff  libpthread-2.12.so  ???

0x3889400000 – 0x3889683fff  libm-2.12.so  ???

0x388b400000 – 0x388b615fff  libgcc_s-4.4.5-20110214.so.1  ???

0x388e400000 – 0x388e6f0fff  libstdc++.so.6.0.13  ???

0x7fffbf5ff000 – 0x7fffbf5fffff  linux-gate.so  ???

簡單記錄下,還在摸索階段,下一步嘗試將其合併到mysql中,看看生成的core file大小是否可以接受。

初試MySQL筆記之一

mysql是乙個關係型資料庫管理系統 rdbms mysql的非商業應用是免費的。乙個資料庫可以包含若干個表 table 每個表的每一行 row 資料由若干個資料域 field 或者叫做資料列 column 組成的。連線mysql mysql h hostname u username p 然後輸入...

初試MYSQL全文檢索工具 Sphinx

參考文章 用 php 構建自定義搜尋引擎 sphinx速成指南 測試環境 作業系統 windows xp 資料庫版本 mysql server version 5.0.45 一 安裝 詳細安裝過程參考 sphinx速成指南 二 測試sphinx自帶的demo。1 匯入資料庫檔案example.sql...

MySQL視窗函式基礎初試(一)

mysql支援視窗函式,對於資料row的查詢,會使用一些相關的rows進行計算出乙個row。如下將會討論如何使用視窗函式,包括over以及window子句,本結只討論非聚集視窗函式。聚集視窗函式參考 聚集視窗函式 更多關於優化以及視窗函式參考 視窗函式優化 mysql視窗函式主要涉及一下內容 12....