再看perf是如何通过dwarf处理栈帧的
从结构体stack_dump入手,
util/unwind-libunwind-local.c 中有函数access_mem
#0 access_mem (as=0x1f65bd0, addr=140221249831136, valp=0x7fffffffa930, __write=0, arg=0x7fffffffb900) at util/unwind-libunwind-local.c:452
#1 0x00007ffff6c171ec in _Ux86_64_dwarf_search_unwind_table () from /usr/lib/x86_64-linux-gnu/libunwind-x86_64.so.8
#2 0x000000000052cd16 in find_proc_info (as=0x1f65bd0, ip=140221248995871, pi=0x7fffffffb620, need_unwind_info=1, arg=0x7fffffffb900)
at util/unwind-libunwind-local.c:364
#3 0x00007ffff6c13e75 in ?? () from /usr/lib/x86_64-linux-gnu/libunwind-x86_64.so.8
#4 0x00007ffff6c159e7 in ?? () from /usr/lib/x86_64-linux-gnu/libunwind-x86_64.so.8
#5 0x00007ffff6c16cd9 in ?? () from /usr/lib/x86_64-linux-gnu/libunwind-x86_64.so.8
#6 0x00007ffff6c0f671 in _Ux86_64_step () from /usr/lib/x86_64-linux-gnu/libunwind-x86_64.so.8
#7 0x000000000052c48c in get_entries (ui=ui@entry=0x7fffffffb900, cb=0x4c0ff0 <unwind_entry>, arg=0x7ffff7fcf758, max_stack=127)
at util/unwind-libunwind-local.c:648
#8 0x000000000052c6c2 in _unwind__get_entries (cb=<optimized out>, arg=<optimized out>, thread=<optimized out>, data=<optimized out>,
max_stack=<optimized out>) at util/unwind-libunwind-local.c:686
#9 0x00000000004c652c in thread__resolve_callchain_unwind (max_stack=127, sample=0x7fffffffbb60, evsel=0x1ee46f0, cursor=0x7ffff7fcf758,
thread=0x1f42060) at util/machine.c:1941
#10 thread__resolve_callchain (thread=0x1f42060, cursor=0x7ffff7fcf758, evsel=0x1ee46f0, sample=0x7fffffffbb60, parent=0x7fffffffba68,
root_al=0x7fffffffba00, max_stack=127) at util/machine.c:1968
#11 0x00000000004bf181 in sample__resolve_callchain (sample=<optimized out>, cursor=<optimized out>, parent=parent@entry=0x7fffffffba68,
evsel=<optimized out>, al=al@entry=0x7fffffffba00, max_stack=max_stack@entry=127) at util/callchain.c:803
#12 0x00000000004ed711 in hist_entry_iter__add (iter=0x7fffffffba40, al=0x7fffffffba00, max_stack_depth=127, arg=0x7fffffffc0e0)
at util/hist.c:1023
#13 0x000000000043208e in process_sample_event (tool=0x7fffffffc0e0, event=<optimized out>, sample=0x7fffffffbb60, evsel=<optimized out>,
machine=<optimized out>) at builtin-report.c:192
#14 0x00000000004cb1fa in perf_evlist__deliver_sample (machine=<optimized out>, evsel=0x1ee46f0, sample=0x7fffffffbb60, event=0x7ffff7ff5578,
tool=0x7fffffffc0e0, evlist=0x1ee3cb0) at util/session.c:1196
#15 machines__deliver_event (machines=machines@entry=0x1ee39f8, evlist=0x1ee3cb0, event=event@entry=0x7ffff7ff5578,
sample=sample@entry=0x7fffffffbb60, tool=tool@entry=0x7fffffffc0e0, file_offset=file_offset@entry=17784) at util/session.c:1233
是如何处理栈帧的
.... SP 0x7ffd099f2b58
.... IP 0x7f87cdbc821f
然后发现access_mem调用了好多次,可能是因为用户栈大小的问题,是怎么
编译了binary,但是并没有正确解析出函数调用栈,这是因为在我系统的lib64.so中并没有相关的debuginfo,导致在解析getpid函数的时候并没有准确得到调用栈的信息,如果我在func函数的地方打点,那么就不会遇到这个问题了:
试一下
即便在uprobe处打点,为啥只检测出来一层调用栈,看样子是解析出
再看perf是如何通过dwarf处理栈帧的的更多相关文章
- perf使用的问题,再看perf record,perf record 设置的采样频率,采样频率是如何体现在
当perf stat -e branches 是统计 再看perf record,perf record是为了是记录时间发生的时候的调用栈, 在我的测试代码中总共有200,000,000条branch ...
- 再看Ajax
再回顾Ajax相关的内容,再次梳理学习还是很有必要的,尤其是实际的开发中,ajax更是必不可少,仔细学习以便避免不必要的错误. 文章导读: --1.使用XMLHttpRequest---------- ...
- 再看ftp上传文件
前言 去年在项目中用到ftp上传文件,用FtpWebRequest和FtpWebResponse封装一个帮助类,这个在网上能找到很多,前台使用Uploadify控件,然后在服务器上搭建Ftp服务器,在 ...
- 再看 AspriseOCR - OCR应用开发 -20151124
再看 AspriseOCR - OCR应用开发 我写这个博文时间为 2015/11/24日,注意时间因为,网上很多文章时间上很久远,有的已经不能参考了 很多人面对从图片中识别文字或者数字0~9 A~ ...
- Android菜鸟的成长笔记(17)—— 再看Android中的Unbounded Service
原文:Android菜鸟的成长笔记(17)-- 再看Android中的Unbounded Service 前面已经写过关于startService(Unbounded Service)的一篇文章:&l ...
- 再看case语句
再看case语句,case语句只处理单条记录,而不是set 列名的使用,可以当做数值来使用: case when 后面简直是完美的的,什么东西都是能放的,只要是一个逻辑上的true/false的逻辑就 ...
- android 智能指针的学习先看邓凡平的书扫盲 再看前面两片博客提升
android 智能指针的学习先看邓凡平的书扫盲 再看前面两片博客提升
- python基础----再看property、描述符(__get__,__set__,__delete__)
一.再看property 一个静态属性property ...
- 再看Scrapy(1) 基本概念
再看Scrapy(1) 基本概念 1 准备 安装scrapy: 国内镜像源(官方的pypi不稳定)安装 pip3 install -i https://pypi.douban.com/simple/ ...
随机推荐
- SAP Odata実行命令(2)
前言 $ skiptokenは.アプリケーションに送信されるエントリ数を制限するために使用されます. 膨大な数のエントリが要求された場合.これはパフォーマンスの向上にも役立ちます.次のリンクがアプリケ ...
- 记一次 Android 客户端(CJYYKT)的逆向
主角: 描述: 湖南省教育局推的一款大学生 App,需要每个学生看完里面的一个课程的视频,共 8 章,每章 10 - 23 个视频(连续播放大约 24 小时),每个视频每隔不定时间就会弹出一个选择题答 ...
- codechef Table Game(博弈)
题意 题目链接 很难概括.. Sol (因为比赛还没结束,所以下面讲的可能是“非官方”“正解”) maya这题我前前后后 断断续续的做了一个星期才A掉.CC一场challenge出两道打表题可有点过分 ...
- 10、Java并发编程:并发容器之ConcurrentHashMap
Java并发编程:并发容器之ConcurrentHashMap(转载) 下面这部分内容转载自: http://www.haogongju.net/art/2350374 JDK5中添加了新的concu ...
- netty之心跳机制
1.心跳机制,在netty3和netty5上面都有.但是写法有些不一样. 2.心跳机制在服务端和客户端的作用也是不一样的.对于服务端来说:就是定时清除那些因为某种原因在一定时间段内没有做指定操作的客户 ...
- JS代码优化及技巧
案例一 对象参数独立化 情景:为多个日期文本框添加日期选择器 源代码: $('#PropertySalesAdviceExchnagedDate1').datepicker({ showOn: 'b ...
- 友晶Altera Cyclone V GX Starter Kit开发板使用ADC-第一篇
1. 拿到板子在,做工很好,属于GX系列,GX应该是高速收发器 2. 去探究下GX是什么用途,大约有6个型号,这个板子是5CGXFX5,有77 LE逻辑单元,这个收发器不知道是什么?6个 3.125G ...
- letsencrypt证书-管理工具certbot
目录 1. 安装certbot 2. certbot 介绍 3. 插件的具体使用 3.1 webroot 3.2 standalone 3.3 DNS plugins 3.4 manual 4. 证书 ...
- leetcode笔记10 Intersection of Two Arrays(求交集)
问题描述: Given two arrays, write a function to compute their intersection. Example:Given nums1 = [1, 2, ...
- OSG-简单模型控制
本文转至http://www.cnblogs.com/shapherd/archive/2010/08/10/osg.html 作者写的比较好,再次收藏,希望更多的人可以看到这个文章 互联网是是一个相 ...