查看当前执行程序集的IL代码片段
2011-03-04 10:21
141 查看
1 static void Main(string[] args)
2 {
3 WriteIL("M1");
4 WriteIL("M2");
5 Console.Read();
6 }
7
8 void M1()
9 {
10 int a = 0;
11 }
12
13 void M2()
14 {
15 int a = 0;
16 Console.WriteLine(a);
17 }
18
19 private static void WriteIL(string method)
20 {
21 Type tp = (new Program()).GetType();
22
23 MethodInfo mi = tp.GetMethod(method,
24 BindingFlags.NonPublic | BindingFlags.DeclaredOnly | BindingFlags.Public | BindingFlags.Static | BindingFlags.Instance);
25
26 MethodBody mb = mi.GetMethodBody();
27 byte[] bt = mb.GetILAsByteArray();
28
29 StringBuilder sb = new StringBuilder();
30 for (int i = 0; i < bt.Length; i++)
31 {
32 sb.Append(bt[i].ToString("X2"));
33 sb.Append(" ");
34 }
35
36 Console.WriteLine(sb.ToString());
37 }
2 {
3 WriteIL("M1");
4 WriteIL("M2");
5 Console.Read();
6 }
7
8 void M1()
9 {
10 int a = 0;
11 }
12
13 void M2()
14 {
15 int a = 0;
16 Console.WriteLine(a);
17 }
18
19 private static void WriteIL(string method)
20 {
21 Type tp = (new Program()).GetType();
22
23 MethodInfo mi = tp.GetMethod(method,
24 BindingFlags.NonPublic | BindingFlags.DeclaredOnly | BindingFlags.Public | BindingFlags.Static | BindingFlags.Instance);
25
26 MethodBody mb = mi.GetMethodBody();
27 byte[] bt = mb.GetILAsByteArray();
28
29 StringBuilder sb = new StringBuilder();
30 for (int i = 0; i < bt.Length; i++)
31 {
32 sb.Append(bt[i].ToString("X2"));
33 sb.Append(" ");
34 }
35
36 Console.WriteLine(sb.ToString());
37 }
相关文章推荐
- go实用小技能(二)-获取当前执行程序的文件名和代码所在行号
- 四、CLR执行程序集中代码和IL代码简介
- 几个代码片段-计算程序运行时间+获得当前目录+生成MD5
- 在ns-3中查看当前有哪些程序可以执行
- 快速启动ILDasm查看当前项目的IL代码
- 查看当前程序执行的环境变量
- 【原】用上传控件进行文件上传时,页面程序代码都不执行,显示“页面信息无法显示”
- 正尝试在 OS 加载程序锁内执行托管代码。不要尝试在 DllMain 或映像初始化函数内运行托管代码,这样做会导致应用程序挂起。
- 如何在程序中执行动态生成的Delphi代码
- C#中得到程序当前工作目录和执行目…
- 该文件没有程序与之关联来执行该操作。请在控制面板的文件夹选项中创建关联 解决代码
- VS2010调试“正试图在 OS 加载程序锁内执行托管代码”和运行出现R6034问题解决
- 该文件没有程序与之关联来执行该操作,请在控制面板的文件夹选项中创建关联 解决代码
- 查看当前oracle中正在执行的sql语句
- 正试图在 os 加载程序锁内执行托管代码。不要尝试在 DllMain 或映像初始化函数内运行托管代码,这样做会导致应用程序挂起
- C#报错“OS加载程序锁内执行托管代码,不要尝试在DllMain或映像初始化函数内运行托管代码”的解决方法。
- 比较常用的C++程序代码片段
- PHP计算当前程序执行时间
- PC值=当前程序执行位置+8
- C++获取当前可执行程序(*.exe)所在的路径