我使用采样模式使用Visual Studio 2013探查器分析应用程序。有时,应用程序使用.net远程处理对远程进程进行阻止调用。有时这个电话会等待很长时间才能得到答复。例如,在30秒的间隔内,它可能花费10秒等待响应。我希望它显示为热点,因为对于许多样本,对远程进程的调用将出现在堆栈中。但是,它并没有。在调用方法上花费的时间可以忽略不计。有解释吗?
答案 0 :(得分:2)
热点与CPU利用率有关,在这种情况下,被阻止的线程不符合条件,所以你看到的是正确的。
答案 1 :(得分:2)
在采样模式下,当线程被阻塞时,该探查器不会采样。 因此,它对I / O是盲目的,即使它占用99.9%的时间。 (他们称之为“CPU采样”,试图使其听起来像一个功能。)
在仪表模式下,它由定时器而非样本工作,因此它包括阻塞时间,但它只提供功能级别的分辨率。
this question的第二个答案列出了所有这些问题。