有没有办法监控正在发生的CAS堆叠行走的数量?

时间:2009-09-24 13:13:33

标签: cas

我正在使用一个时间敏感的桌面应用程序,它广泛使用p / invoke,我想确保代码不会在CAS堆栈行走上浪费大量时间。

我已经使用了SuppressUnmanagedCodeSecurity属性,我认为这是必要的,但我可能错过了一些地方。有没有人知道是否有办法监控正在发生的CAS堆栈行程的数量,并且更好地确定安全需求的来源?

1 个答案:

答案 0 :(得分:0)

您可以使用Process Explorer工具(来自Sysinternals)来监控您的流程。

打开Process Explorer,选择您的流程并右键单击以显示“属性”。然后,在.NET选项卡上,选择要监视的.NET CLR安全对象。 Process Explorer将显示

的计数器
  1. 总运行时检查
  2. 链接时间检查

  3. RT检查时间%
  4. Stack Walk Depth
  5. 这些是此处描述的标准安全性能计数器 - > http://msdn.microsoft.com/en-us/library/adcbwb64.aspx

    您也可以使用Perfmon或编写自己的代码来监控这些计数器。

    据我所知,唯一真正有用的是第1项。您可以在调试时关注它,看看它是否正在大幅增加。如果是这样,您需要检查导致安全需求的原因。

    我不知道任何其他工具可以告诉你什么时候触发堆栈行走。