接下去就能够详细调节和测试、查看

6.VS20一七中安装断点并运维查看test_core.dll的运转结果

总体配置如下: 

 

2.准备coreclr编写翻译意况 ,本次选择Win10系统,VS20一七编写翻译及调节和测试(本机VS2014,VS2017都设置了)。

七.接下来正是发挥想象力的时候了,可以参照他事他说加以考察 GitHub coreclr
文书档案,关键职位下断点,调节和测试ryujit宗旨代码

  • 咱俩和好编写翻译的托管 test_core.dll ,也是器重实验对象。
  • .NET Core
    SDK的托管基础类库System.Runtime.dll、System.Threading.dll、、、等(test_core.dll
    相关托管依赖)。
  • 笔者们编写翻译的CoreClr非托管dll,coreclr.dll、clrjit.dll、CoreRun.exe、、等,是大家任重(Ren Zhong)而道远的Debug对象。

小指标:大家的指标是用.Net
Core 贰.0 SDK编写翻译三个小控制台程序 test_core.dll ,然后用VS2017
Debug 
coreclr
源码
 ,接下去就可以详细调节和测试、查看test_core.dll
IL代码是怎么一步步jit成Native代码的。**

用.Net Core二.0 SDK编写翻译如下代码,怎么样编写翻译自行脑补

小总结:现今告竣一共涉及到三方dll(托管和非托管):

图片 1

5.用编译test_core.dll

将编写翻译生成内容全方位copy到coreclr\bin\Product\Windows_NT.x64.Debug目录中

 

 1 using System;
 2 using System.Runtime.CompilerServices;
 3 
 4 namespace test_core
 5 {
 6     class Program
 7     {
 8         const int Pass = 100;
 9         const int Fail = -1;
10         [MethodImplAttribute(MethodImplOptions.NoInlining)]
11         public static void DblRoots(double a, double b, double c, ref double r1, ref double r2)
12         {
13             r1 = (-b + Math.Sqrt(b * b - 4 * a * c)) / (2 * a);
14             r2 = (-b - Math.Sqrt(b * b - 4 * a * c)) / (2 * a);
15             return;
16         }
17         static int Main(string[] args)
18         {
19             double x1 = 0;
20             double x2 = 0;
21             DblRoots(1d, -5d, 6d, ref x1, ref x2);
22             Console.WriteLine(x1 + "," + x2);
23             if (System.Math.Abs(x1 - 3d) > Double.Epsilon) return Fail;
24             if (System.Math.Abs(x2 - 2d) > Double.Epsilon) return Fail;
25             string str = Console.ReadLine();
26             return Pass;
27 
28         }
29     }
30 }

图片 2

图片 3

图片 4

③.全套准备就绪coreclr目录展开调整台 .\build
skiptests,悠久等待,编写翻译完毕如下:

图片 5

4.配置Debug,Github上有相关描述,不过正如老,并不完全好用,下边进入自身个人精通,重新整理如下:

图片 6

①.下载最新 coreclr
源码
并切换来release/二.0.0分支 ,本文章首要目标是学习coreclr源码,由于主Master代码一向在更新,好些个新主题材料并从未马上修复,选取release分支可避防止过多编写翻译难点,相同的时间也很牢固。

8.梦想此文能补助大家更易于的Debug CoreClr,接待各路大腕教导。

  • a. 找到文件夹 coreclr\bin\obj\Windows_NT.x64.Debug
    ,VS2017打开 CoreCLR.sln
  • b.设置 INSTALL工程为运维项目。
  • c.设置 INSTALL工程->右键properties ->Debugging。
  • d.设置
    Command=$(SolutionDir)..\..\product\Windows_NT.$(Platform).$(Configuration)\corerun.exe。
  • e.设置 Command Arguments=<managed app you wish to run> (e.g.
    test_core.dll)。
  • f.设置
    Directory=$(SolutionDir)..\..\product\Windows_NT.$(Platform).$(Configuration)以此文件夹包罗了编译CoreCL汉兰达 生成的dll和pdb文件。
  • g.设置 Environment=CORE_LIBRARIES=C:\Program
    Files\dotnet\shared\Microsoft.NETCore.App\贰.0.3(此布局告诉CoreCL科雷傲去此路线去找基础托管类库,不安顿debug会抛错,为了有利于直接针对本机.Net
    Core SDK内文件夹)。