gpt4 book ai didi

c# - 如何检索已编译方法的源文件?

转载 作者:太空狗 更新时间:2023-10-29 21:42:11 25 4
gpt4 key购买 nike

我真的被这个难住了!

StackFrame 对象 ( MSDN Link ) 有一个 GetFileName 方法,该方法返回编译执行方法的源文件的原始路径(假设符号已生成并包含在执行程序集中)。看起来此信息用于生成完整的异常文本。

如果该方法当前未执行,我正在尝试找到一种获取此信息的方法。我一直在研究反射 API,但没有找到获取此信息的方法。我想它一定在某处。

有没有其他人知道可以获取代码文件名的基于反射的方法(或任何其他方法)?

感谢接受任何想法、评论或滥用。

非常感谢!

最佳答案

反射只能从程序集元数据中提供类型信息。获取地址需要 .pdb 调试文件和函数在内存中的地址,由 JIT 编译器编译。如果没有 StackFrame.GetNativeOffset() 方法或调试器接口(interface),您将无法获取地址,假设该方法甚至已编译。后一种方法无法在进程内工作,程序无法 self 调试。

CLR 没有任何问题,因为它可以在处理异常时从堆栈帧中检索方法地址。这仍然是一种不完美的艺术,它看不到内联方法的地址。拥有这些堆栈帧是必需的第一步。

关于c# - 如何检索已编译方法的源文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2607987/

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