c++_perf查cpu热点_ASan_uaf等

发布时间:2026/7/21 7:42:46
c++_perf查cpu热点_ASan_uaf等 这章主要讲述用perf查热点并生成火焰图使用asan检查uaf1环境linuxperf2:安装sudo apt update安装当前内核专属包自动匹配sudo apt install linux-tools-$(uname -r)OR安装基础及通用包sudo apt install linux-tools-common linux-tools-generic[rootZ*********Z ~]# perf --versionperf version 5.10.134-16.3.al8.x86_64支持-o2 加-g 就行 -O2 -g -fno-strict-aliasing -c3:火焰图 FlameGraphgit clone https://github.com/brendangregg/FlameGraph.git4:使用top 查看cpu当前以 PID 74282 为例 如果机子内存小就增加Swap防止系统崩溃‌没有 Swap 的话内存耗尽时系统会直接触发 OOM-Killer 机制OOM-Killer 连core 都不生成eg: 采集30秒 每秒采样 99 次 你的硬件还有大量冗余 可以加大采样perf record -o test7428202.data --call-graphdwarf -F 99 -p 74282 – sleep 30perf script -i test7428202.data --no-inline --max-stack20 test7428202.script./FlameGraph/stackcollapse-perf.pl test7428202.script test7428202.folded./FlameGraph/flamegraph.pl test7428202.folded test7428202.svg拖到浏览器就可以看了 大概这个样子 windows 可以用 ‌Windows Performance Toolkit 早期 aqtimeasan 检查 Use-After-Free (UAF) 在释放后再使用测试代码 网上抄的#includestdio.h#includestdlib.hvoidleak_memory(){int*p(int*)malloc(sizeof(int)*16);// 没有释放内存导致内存泄漏}intmain(){int*arr(int*)malloc(sizeof(int)*10);arr[10]10;// 内存访问越界错误free(arr);// 使用 free 释放内存int*p(int*)malloc(sizeof(int));free(p);// 使用 free 释放内存int*qNULL;*q9995;// 使用空指针访问内存错误leak_memory();return0;}T0 为线程 多线程 可能是 T0 。。。 TN等