我正在寻找 Visual Studio 的扩展,在 Debug模式下可以单步执行除 C# 之外的中间语言。
我不是在寻找调试托管和非托管代码的解决方案。
最佳答案
你的目的是什么?您的 IL 是由 C# 编译器生成的还是在运行时动态生成的?如果是前者,您可以使用一个技巧,通过 ilasm
重新编译您的二进制文件。
- 像往常一样编译 C# 代码。优化与否无关紧要,但您必须指定编译选项以生成完整的 PDB 符号。
- 使用 ildasm 将您的二进制文件转换为 .il 文件。它是菜单中的转储选项。
重新编译 .il 文件以获得新的二进制文件(和新的符号)
ilasm .il [/exe|/dll]/调试
现在,在调试该特定程序集时,您将看到 IL 代码而不是 C# 代码。如果您在第 2 步中选择了适当的选项,您还将看到来自原始 C# 文件的匹配行。
对于动态生成的 IL,我会简单地使用 WinDbg with SOS extension .它可以转储 IL 并单步执行它,但需要一点时间才能习惯。
关于c# - 在 Visual Studio 中通过中间语言 (IL) 和 C# 同时进行调试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5292606/