在macos上查看当前进程的栈信息

概述

在调试程序时,如cpu莫名的高或低,一个常用的方式就是打印当前进行的调用栈,然后确认各线程的执行函数是否有异常。

在linux系统中可以使用pstack命令,直接打印各线程的栈信息,可惜在macos上没有该命令。一种解决方式就是将代码迁移到linux平台上进行debug(事实上笔者也是这么做的,因为linux平台有很多熟悉的工具),但代码迁移存在成本(系统函数版本不一致),macos上的系统文件版本和linux平台上大概率是不同的。

因此比较直接的方式还是找到代替pstack的mac版本,也是本文介绍的方法。

具体做法

step1:打开mac本自带的程序"活动监视器"

step2: 找到正在调试的进程,如果当前进程太多,可以使用右上角的搜索框辅助

step3: 选中正在调试的进程,点击左上角的"系统诊断选项",在弹出的下拉菜单中点击"取样进程"

step4: 等一段时间后(采样时间,5s左右),会弹出一个分析文件。该文件头部会提示对该进程采样的次数,然后根据采样到的线程栈函数出现次数由高到低显示,主要信息包括线程id和采样次数。

相关推荐
coding4u6 小时前
Mac 外接显示器完全指南:从插上线到调好每个参数
macos·计算机外设·文件管理·显示器·策略模式·quick look扩展
zhyf1196 小时前
(Mac)Homebrew部署Obsidian+Claudian+Excalidraw
macos
chuan.bai6 小时前
Java RAG 实战(第 3 篇):从交互式聊天到多轮上下文
java·人工智能·macos·ai
Chennn__7 小时前
开源项目:Recorder — 本地离线 macOS 录音转文字(通用/课堂/雅思,可选 Ollama)
macos
AUV11077 小时前
录系统声音用什么 Mac 录屏软件:双音源到成片的五层验收
macos
向阳是我10 小时前
两台 Mac 远程共享屏幕最佳方案:Tailscale + macOS 原生屏幕共享
macos
楷哥爱开发10 小时前
如何在 Windows、macOS 和 Linux 上安装 scikit-learn (sklearn)
linux·windows·macos
Architect_Lee1 天前
mac快速安装mysql
数据库·mysql·macos
User_芊芊君子1 天前
STT + LLM + TTS:用一条流水线搓了个中英双向翻译助手
ide·macos·xcode
凤山老林2 天前
在 Apple 芯片的 Mac 上通过 VMware Fusion 使用 Windows 11
windows·macos·vmware·虚拟机