You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何查看C/C++编写的Windows应用程序运行时被调用的函数

解决方案汇总

完全可以实现,Windows平台下针对不同使用场景有多种成熟工具可以满足查看运行中C/C++程序当前执行函数的需求,常用方案如下:

1. 系统原生免额外复杂配置方案

  • 任务管理器(快速排查)
    打开任务管理器找到目标进程,右键选择「创建转储文件」,拿到生成的dmp文件后用Visual Studio打开,加载对应版本的pdb符号文件后即可查看所有线程的调用栈,直接定位到当前正在执行的函数。该方案无需提前准备调试环境,适合临时快速排查问题。
  • WinDbg Preview(官方调试工具)
    微软官方推出的专业Windows调试工具,可直接从微软商店安装。使用流程:
    1. 启动工具后按F6选择附加到正在运行的目标进程
    2. 配置符号路径后执行命令k即可打印当前线程的调用栈,执行~*k可以打印所有线程的调用栈,直接获取各线程当前执行的函数
    3. 如果需要实时跟踪函数执行流程,可以执行wt命令跟踪指令和函数调用过程,也可以手动下断点精准监控目标函数的执行。

2. 开发阶段IDE集成方案

  • Visual Studio 调试器
    如果你持有程序的源码,直接在VS中打开对应项目,点击调试菜单的「附加到进程」,选择目标进程后点击调试暂停按钮,就能在调用栈面板直接看到当前执行的函数,还可以同步查看变量、寄存器等上下文信息,是开发调试阶段最高效的方案。
  • VS Code C/C++ 调试插件
    若使用VS Code作为开发工具,安装官方C/C++扩展后同样支持附加到运行中的Windows进程,暂停调试后即可查看调用栈信息,使用逻辑和Visual Studio基本一致。

3. 生产环境非侵入式方案

如果目标程序运行在生产环境,不允许附加调试器中断正常运行,可以使用采样类性能分析工具实现无侵入监控:

  • Windows Performance Recorder (WPR) + Windows Performance Analyzer (WPA)
    两个工具均属于Windows官方性能工具包组件,你可以用WPR采集指定时间段内的程序运行采样数据,导出etl日志文件后用WPA打开分析,即可查看采样时间段内程序各函数的执行占比,以及任意采样点正在执行的函数,整个过程完全不会影响程序的正常运行。
  • xperf 命令行工具
    命令行版本的性能采样工具,执行命令xperf -on PROC_THREAD+LOADER+PROFILE -stackwalk Profile启动采集,采集完成后执行xperf -d trace.etl导出日志文件,后续同样可以用WPA分析调用栈信息,适合自动化脚本采集场景。

内容的提问来源于stack exchange,提问作者npc537

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 17:06:04