32位程序导出dump

32位程序需要用32位的任务管理器导出。

  1. C:\Windows\SysWOW64\Taskmgr.exe

64位程序导出dump

任务管理器导出dump文件

image.png
用WinDbg打开dump文件。

!threadpool

线程池情况

  1. !threadpool
  2. CPU utilization: 13%
  3. Worker Thread: Total: 7 Running: 0 Idle: 4 MaxLimit: 8191 MinLimit: 4
  4. Work Request in Queue: 0
  5. --------------------------------------
  6. Number of Timers: 2
  7. --------------------------------------
  8. Completion Port Thread:Total: 1 Free: 1 MaxFree: 8 CurrentLimit: 1 MaxLimit: 1000 MinLimit: 4
  9. 0:000> !threadpool
  10. CPU utilization: 13%
  11. Worker Thread: Total: 7 Running: 0 Idle: 4 MaxLimit: 8191 MinLimit: 4
  12. Work Request in Queue: 0
  13. --------------------------------------
  14. Number of Timers: 2
  15. --------------------------------------
  16. Completion Port Thread:Total: 1 Free: 1 MaxFree: 8 CurrentLimit: 1 MaxLimit: 1000 MinLimit: 4

!runaway

显示当前进程的所有线程用户态时间信息

  1. !runaway

!clrstack

显示调用栈

  1. !clrstack

!threads

查看线程

  1. !threads
  2. ## 查看特殊线程
  3. !threads -special

kb

打印出调用的堆栈

  1. kb

~ns

切换线程ID为n的线程为当前调试线程

  1. ~20s

加载对应的SOS.DLL

  1. ## 32位加载32位的sos.dll
  2. .load C:\Windows\Microsoft.NET\Framework\v4.0.30319\sos.dll
  3. ## 64位加载64位的sos.dll
  4. .load C:\Windows\Microsoft.NET\Framework64\v4.0.30319\sos.dll

!dso

查看当前堆栈的对象

!do 00000002838d92c8

查看某个托管对象

!dumpheap -stat

检查当前所有托管类型的统计信息

  1. !dumpheap -stat

!dumpheap -mt address

  1. !dumpheap -mt 00007ffd5c24a068
  1. !analyze -v

image.png