gpt4 book ai didi

.net - 我是否需要编写自己的非托管 IL 库来使用 CLR Profiling API 重写 IL?

转载 作者:行者123 更新时间:2023-12-04 12:25:28 27 4
gpt4 key购买 nike

我一直在查看有关 CLR Profiling API 的一些文章,其中许多文章都谈到调用 SetILFunctionBody() 来进行实际的 IL 重写;但是,这些文章都没有真正解释您可以使用什么来重写实际的 IL 字节方法。是否有一个非托管库允许我编写 IL,或者我必须自己编写一个?

最佳答案

大概。这取决于。

Mono 项目有一个名为 Cecil 的库,您可以在此处访问:

http://mono-project.com/Cecil

但是,它是托管代码,在分析时无法调用。不过,您可能有几个选择:

  • 使用工控机。您可以生成一个新进程,在该进程中使用 cecil 进行重写,然后使用命名管道将字节传回您的分析器。
  • 将 CECIL 移植到 C++。代码在 MIT/X11 许可下分发,因此您无需共享更改即可执行此操作。
  • 只需从头开始编写自己的东西。

  • #1 引入了一堆额外的复杂性。您的分析器最终会拥有比实际需要更多的事件部件。此外,IPC 引入了一堆额外的开销。

    #2 需要很长时间。鉴于 Cecil 仍然只有 0.6 版本,与编写自己的实现相比,可能不值得花时间去做。

    #3 会给你最大程度的控制,并且可能是最高效的。然而,这将比 #1 花费更多的努力。

    关于.net - 我是否需要编写自己的非托管 IL 库来使用 CLR Profiling API 重写 IL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2269844/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com