2

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

我在我认为有必要的地方使用了 SuppressUnmanagedCodeSecurity 属性,但我可能错过了一些地方。有谁知道是否有办法监控正在发生的 CAS stackwalk 的数量,并更好地查明安全需求的来源?

4

1 回答 1

1

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

调出 Process Explorer,选择您的进程并右键单击以显示“属性”。然后,在 .NET 选项卡上,选择要监视的 .NET CLR Security 对象。Process Explorer 将显示计数器

  1. 总运行时检查
  2. 链接时间检查

  3. RT 检查时间百分比
  4. 堆栈步行深度

这些是此处描述的标准安全性能计数器-> http://msdn.microsoft.com/en-us/library/adcbwb64.aspx

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

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

我不知道有任何其他工具会告诉您何时触发堆栈行走。

于 2009-09-24T15:51:59.427 回答