从 PDB 文件中检索局部变量名称
我目前正在尝试从 IL 字节码和 PDB 文件检索源代码, 我已经可以从 IL 和反射生成源代码了 我知道局部变量名称包含在 pdb 文件中。 我的问题是如何找回它?我应该使用什么库来处理 pdb 文件(如果有)或者我应该自己编写代码?在哪里可以找到有关 pdb 文件格式的信息? 目前在生成的源代码中,我正在使用自动生成的局部变量值,但我想更改它,因为我相信如果您有 pdb 文件可供使用,则可以找到该信息。 我尝试在谷歌上查找,但没有找到任何有用的信息。
预先感谢您的回复;)
i'm currently trying to retrieve source code from IL bytecodes and PDB files,
i'm arrived to the point where i can generate source code from IL and reflection
i know the name of local variable names is included in the pdb file.
My question is how can i find it back ? what libs should i use to handle the pdb files (if any) or should i write the code myself ? where can i find information about pdb file format ?
currently in the generated sourcecode i'm using auto generated values for local variables but i want to change that as i believe it is possible to find that information back if you have pdb files at your disposal.
I tried to look on google but i didnt find any usefull informations.
Thanks in advance for you replies ;)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
以下是如何使用 System.Diagnostics.SymbolStore 中的类型从 MethodInfo 读取局部变量名称:
SymUtil
类来自 此示例。编辑:以上链接已损坏。来自谷歌缓存:
Here's how to read local variable names from a MethodInfo using the types in
System.Diagnostics.SymbolStore
:The
SymUtil
class comes from this example.Edit: The above link is broken. From a google cache:
我看到这个问题是在2011提出的。现在是 2019,有 2 个选项可以从方法中检索局部变量。
首先我们定义
VariableInfo
来保存局部变量参数:然后我们定义
ILocalsReader
接口如下:现在可以用
Microsoft.Samples.Debugging.CorApi
像这样:其中
GetInnerScopesRecursive
是一种扩展方法:记住针对
x64
进行构建。另一种选择是使用
Mono.Cecil
像这样:其中
GetMethodDefinition
是扩展方法:而
GetReturnType
是扩展方法:FullNameMatches
是一个扩展方法:GetInnerScopesRecursive
是一个扩展方法:用法:
给出:
注意:
Microsoft.Samples。 Debugging.CorApi
拥有约 9k 次下载,最后更新于 2011 年 12 月 10 日Mono.Cecil
拥有约 3415k 次下载,最新提交于 2019 年 8 月 5 日I see the question was asked in 2011. Now it's 2019 and there are 2 options to retrieve local variabls from a method.
First let's define
VariableInfo
to keep local variable parameters:Then let's define
ILocalsReader
interface as folows:Now one can implement it with
Microsoft.Samples.Debugging.CorApi
like this:Where
GetInnerScopesRecursive
is an extension method:Remember to build against
x64
.Another option is using
Mono.Cecil
like this:Where
GetMethodDefinition
is an extension method:And
GetReturnType
is an extension method:And
FullNameMatches
is an extension method:And
GetInnerScopesRecursive
is an extension method:Usage:
Gives:
Note:
Microsoft.Samples.Debugging.CorApi
has ~9k downloads and was last updated on 10.12.2011Mono.Cecil
has ~3415k downloads and latest commit on 05.08.2019查看 Codeplex 上的 CCI 项目。它有一个 PDBReader 项目。
Look at the CCI project on Codeplex. It has a PDBReader project.