• λ我爱Aspx >> Asp.Net >> 调试分布式 Web 应用程序 (3)
  • 调试分布式 Web 应用程序 (3)

  • :未知  Դ:internet  :2007-5-5 19:44:02  ؼ:web
  • 列表中选择 Thread 。选择 Select counters from list ,然后从列表框中选择 %Processor Time 。选择 Select instances from list ,然后选择以 inetinfo/* 开头的所有实例。单击 Add ,然后单击 Close 。 这时,图表中显示在 inetinfo 进程中的所有线程的 CPU 使用情况。 现在可以滚动计数器,将除最接近 100% 标记的那个线程以外的所有线程全部删除。这样我们就准确地找到了引起问题的那个线程。 图 8. 显示关于 CPU 使用情况的计数器的性能监视器

    我们只保留实例 ID 为 34 的线程,它占用了最长的 CPU 时间。现在必须找出这个线程的线程 ID,然后在 WinDBG 中找到这个线程并对它进行调试。

    要找出线程 ID,请用鼠标右键单击图表,然后单击 Add Counters 。在 Add Counters 对话框中,从 Performance Object 列表中选择 Thread 。选择 Select counters from list ,然后从此列表框中选择 ID Thread 。选择 Select instances from list ,然后选择实例 inetinfo/34 。单击 Add ,然后单击 Close

    这样我们就得到了引起问题的那个线程的 ID。选择 ID Thread 计数器。记录该计数器的最后一个值、最大值、最小值和平均值。通常这四个数是相同的。记录这个值(本例中为 764),并切换到 WinDBG 应用程序。

    图 9. 显示 ID 线程计数器的性能对话框

    在 WinDBG 的 View 菜单上,单击 Threads 。这将显示在出现 100% 的 CPU 问题时在 inetinfo 进程内部运行的线程的一个列表。查找您在性能监视器中记录的线程 ID 号。如果在列表中找到此 ID 号,则单击它,然后单击 Select 。单击 OK

    View 菜单上,单击 Call Stack 。这时显示引起问题的那个线程的堆栈。该堆栈将有问题的方法隔离出来。一旦我们找到这个方法,我们就可以返回原代码,查看是哪行代码引起这个问题的。

    Ҷƪл˵?
  • һƪ《用Delphi设计代理服务器》原文及源程序
    һƪ调试分布式 Web 应用程序 (2)