gpt4 book ai didi

.net - 如何调试动态生成的方法?

转载 作者:行者123 更新时间:2023-12-04 15:12:20 32 4
gpt4 key购买 nike

我有一个动态创建的程序集、一个模块、一个类和一个动态生成的方法。

AssemblyBuilder assembly = AppDomain.CurrentDomain.DefineDynamicAssembly(...);
ModuleBuilder module = assembly.DefineDynamicModule(...);
TypeBuilder tb = module.DefineType(...);
MethodBuilder mb = tb.DefineMethod(...);
ILGenerator gen = mb.GetILGenerator();

如何调试使用 ILGenerator 生成的方法代码?我使用 Visual Studio 2012 调试器,但它只是逐步执行方法调用。

最佳答案

您需要将生成的代码标记为可调试。
就像是:

Type daType = typeof(DebuggableAttribute);
ConstructorInfo ctorInfo = daType.GetConstructor(new Type[] { typeof(DebuggableAttribute.DebuggingModes) });
CustomAttributeBuilder caBuilder = new CustomAttributeBuilder(ctorInfo, new object[] {
DebuggableAttribute.DebuggingModes.DisableOptimizations |
DebuggableAttribute.DebuggingModes.Default
});
assembly.SetCustomAttribute(caBuilder);

您还应该添加一个源文件:
ISymbolDocumentWriter doc = module.DefineDocument(@"SourceCode.txt", Guid.Empty, Guid.Empty, Guid.Empty);

您现在应该能够进入动态生成的方法。

关于.net - 如何调试动态生成的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17995945/

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