1.Valgrind简介
Valgrind是一款用于内存调试、内存泄漏检测以及性能分析、检测线程错误的软件开发工具。Valgrind 可以运行在Linux 上的多用途代码剖析和内存调试软件。主要包括Memcheck、Callgrind、Cachegrind 等工具,每个工具都能完成一项任务调试、检测或分析。
2.Valgrind安装
wget https://sourceware.org/pub/valgrind/valgrind-3.16.0.tar.bz2
tar -xjvf valgrind-3.16.0.tar.bz2
cd valgrind-3.16.0
./configure
make &&make install
编译好后检查是否安装完成
valgrind --version
3.Valgrind使用
valgrind --leak-check=yes ./your_progress
如果程序后面带有参数,可以通过下面方式进行使用。
valgrind --leak-check=yes ./your_progress argv1 argv2
还可以通过添加日志参数--log-file=leak.log,将valgrind生成的日志定向到文件中。最后可以通过查看文件的尾部的LEAK SUMMARY检查程序是否有内存泄漏的问题。
1.BreakPad简介
Google breakpad是一个跨平台的崩溃转储和分析框架和工具集合。
Breakpad由三个主要组件:
a.client
以library的形式内置在你的应用中,当崩溃发生时写 minidump文件
b.symbol dumper
读取由编译器生成的调试信息(debugging information),并生成 symbol file
c.processor
读取 minidump文件 和 symbol file ,生成可读的c/c++ Stack trace.
简单来说就是一个生成 minidump,一个生成symbol file,然后将其合并处理成可读的Stack trace。
2.崩溃日志分析
a.生成symbols文件
为了生成可读的stack trace, breakpad需要你将binaries里的调试符号(debugging symbols)转换成基于文本格式的symbol files。
首先确保你在编译代码的时候加上 -g 参数来生成带调试符号的。然后使用 configure && make breakpad源码来生成dump_syms 工具。接着运行 dump_syms 命令来生成 symbol files,如下:
dump_syms /aarch64_linux_gnu_release/bin/sgxserver >Capture.syms
b.调整目录结构
为了可以使用 minidump_stackwalk工具来生成stack trace,你需要将文件放置在一定的目录结构,symbol file的第一行说明了需要放置的目录结构,可以使用head命令来新建这样的目录结构。head -n1 Capture.syms//MODULE Linux aarch 092F2B14F23231C563AD282A3043D1E70
test
mkdir -p ./symbols/PanoramaCapture/092F2B14F23231C563AD282A3043D1E70
mv Capture.syms ./symbols/PanoramaCapture/092F2B14F23231C563AD282A3043D1E70
c.生成Stack Trace
minidump_stackwalk minidump.dmp ./symbols
欢迎添加我们的搜狗测试微信号,与我们一起聊聊测试
本文分享自微信公众号 - 搜狗测试(SogouQA)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。