如何查看正在运行的进程/线程的调用堆栈?

如何查看正在运行的进程/线程的调用堆栈?

有人让我买一个调用堆栈或者堆栈跟踪正在运行的进程,以便他能帮我分析。

我怎样才能获得该信息?

答案1

  1. 得到进程探索器

  2. 使能够显示所有进程的详细信息来自文件菜单:

    在此处输入图片描述

  3. 在主窗格中,选择您感兴趣的流程:

    在此处输入图片描述

  4. 打开所选流程的上下文菜单(右键单击),然后单击特性

    在此处输入图片描述

  5. 线程选项卡中,您将能够看到该进程内正在运行的线程列表:

    在此处输入图片描述

  6. 选择您感兴趣的主题,然后单击按钮:

    在此处输入图片描述

  7. Process Explorer 现在将显示所选线程的当前调用堆栈:

    在此处输入图片描述

符号

如果你的故障排除需要你获得更多细节,那么加载调试通常非常有帮助符号进入 Process Explorer。操作如下:

  1. 如果你还没有安装 Windows 调试器,你需要安装Windows 调试工具第一的。

  2. 在 Process Explorer 中,打开配置符号...来自选项菜单:

    在此处输入图片描述

  3. 如果您安装了调试工具(或其他 Windows 调试器),Process Explorer 将自动找到该dbghelp.dll文件。否则,请在此处设置正确的路径。

    在此处输入图片描述

    符号路径看起来应该是这样的:

    SRV*C:\Symbols*http://msdl.microsoft.com/download/symbols
    

    您唯一需要调整的部分是C:\Symbols。这是调试符号将被缓存的位置。

答案2

如果您需要 clr 进程堆栈,您可以使用 ProcInsp(我是它的开发人员,该工具可免费使用)。

  1. 安装进程检查
  2. 找到您感兴趣的流程并单击它 进程列表
  3. 单击线程(请注意,ProcInsp 将应用程序的入口点显示为线程的名称 - 它跳过 .net 基础架构的所有框架) 主题列表
  4. 显示带有入口点突出显示的堆栈跟踪 堆栈跟踪

相关内容