【源码阅读方法论】使用valgrind生成调用链

周生政

valgrind查看调用关系

在学习开源代码时,我们希望有个工具能够给我们全局的视角而不过早的陷入细节的泥淖中。读书可以跳读,读代码也是可以跳读的。valgrind可以生成整个调用关系链。该关系链指导我们,迅速定位到我们关心的细节。

安装

ubuntu系统

1 apt-get install valgrind
2 apt-get install kcachegrind

mac系统

1 brew install qcachegrind --with-graphviz

使用

  • 使用valgrind生成调用关系
1 valgrind --tool=callgrind --trace-children=yes  --callgrind-out-file=/data/opt/callgrind.out.1111  ./nginx
  • 使用qcachegrind查看调用关系

qcachegrind
https://raw.githubusercontent...
clipboard.png

可能遇到的问题

  • Error: can not open cache simulation output file

保证写的目录有写的权限,可以创建一个目录,赋值为777,在该目录下启动命令valgrind --tool=callgrind --trace-children=yes /data/server/nginx/sbin/nginx, 使用kill终止程序kill SIGINT pid


Nginx源码分析
研读nginx源码

一群热爱代码的人 研究Nginx PHP Redis Memcache Beanstalk 等源码 以及一群热爱前端的人

7.1k 声望
12.7k 粉丝
0 条评论
推荐阅读
【转发】来自西红柿(李乐)的《深入理解Go语言
作者:李乐 原文地址:[链接]第一章 Go语言快速入门  第一篇 基本语法  第二讲 数组与切片  第三讲 字符串  第四讲 哈希表MAP  第五讲 结构体与接口 &em...

LNMPRG源码研究1阅读 1k

Wireshark网卡无法找到或没有显示的问题
最近在处理公司内网域名解析的问题,发现配置好一个新域名在内网环境可以正常解析成内网IP,但使用深信服VPN却无法正常解析,并且其他域名使用深信服VPN可以正常解析,所以参考《内网域名解析配置和简单排错》排...

岚哲阅读 1.4k

2023年2月可用的免费图床
CDN加速图床cdnjson.com 成立于2020年,提供高速稳定的图片上传和分享服务。[链接]需注册无需注册HTTPS支持格式JPG PNG BMP GIF WEBP数量限制单个文件最大支持5MB(注册后可到10M),无限空间, 无限流量支持API调...

donggongai1阅读 334评论 1

【算法训练营】数值计算篇
0 和 1 既不是质数也不是合数,最小的质数是 2 {代码...} 3. 计算两个数字之间的连续值(输入1,4 =>输出1,2,3,4)

代码诗人_1阅读 283

封面图
一键JavaScript对象转为typescript类型(vscode插件)
基于一键Swagger类型转为typescript类型的版本升级,执行Javascript对象转为typescript类型声明。此次升级借助了@babel/types和@babel/genrator的功能,不得不说babel的能力非常的强大

CornerAK阅读 543

开源C库实现HTTP服务器:多线程+事件模型+外挂式跟踪统计
关于Melon库,这是一个开源的C语言库,这个库不依赖其他开源第三方库,因此安装方便,开箱即用。并且中英文文档详细,便于作为工具书进行查阅。Github仓库:传送门。

用户bPbzEjV阅读 519

封面图
Java代码工具快速生成词云图(强烈建议收藏)
“词云”一词最早是由美国西北大学新闻学副教授、新媒体专业主任里奇戈登(Rich Gordon)提出的。词云(Word Cloud),又称文字云、标签云(Tag Cloud)、关键词云(Keyword Cloud),是对文本信息中一定数量的关键...

我要飞的更高阅读 501

封面图

一群热爱代码的人 研究Nginx PHP Redis Memcache Beanstalk 等源码 以及一群热爱前端的人

7.1k 声望
12.7k 粉丝
宣传栏