调试时如何评估通过CIL编辑添加的全局方法与字段?
如何在Visual Studio调试中查看CIL添加的全局成员
是的,你完全可以在Visual Studio调试过程中评估或查看这些存在于<Module>类中的全局成员,以下是具体的实现方法:
1. 使用即时窗口(Immediate Window)
这是最直接便捷的方式:
- 调试时按下
Ctrl+Alt+I打开即时窗口 - 查看全局字段值:直接输入表达式,格式如下
比如你的全局字段叫? <Module>.你的全局字段名GlobalCounter,就输入? <Module>.GlobalCounter,回车后就能看到当前值。 - 调用全局方法:直接输入方法调用语句即可
<Module>.你的全局方法名(参数1, 参数2) - 若不确定成员具体名称,可用反射列出所有相关成员:
这段代码会返回所有静态全局字段(包含公开和非公开的),把typeof(<Module>).GetFields(System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.Static)GetFields替换成GetMethods就能列出所有全局方法。
2. 添加到监视窗口(Watch Window)
如果需要持续跟踪某个全局成员的变化:
- 调试时按下
Ctrl+Alt+W,选择任意一个监视窗口(Watch 1/2/3/4) - 在监视项输入框中输入:
窗口会自动显示该成员的当前值,并在调试过程中实时更新。<Module>.你的全局成员名
注意事项
- 确保调试会话启用了托管代码调试(默认是开启状态,但混合模式调试时要确认托管调试未被禁用)。
- 若Visual Studio提示无法找到
<Module>类,检查是否存在匹配的pdb调试符号文件——符号文件能帮助VS正确识别模块级的类和成员。 - 成员名称要和你用IL工具/dnSpy看到的完全一致,包括特殊字符或编译器生成的后缀(比如
<Init>__1这类)。
内容的提问来源于stack exchange,提问作者SGKoishi
相关产品推荐
相关产品推荐

