Please ensure that pre-requisites are installed for a successful build of the repo.
Note:
- Instructions below assume
c:\corert
is the repo root.
Build your repo by issuing the following command at repo root:
build.cmd
If you changed c:\corert\src\ILCompiler\repro\repro.csproj
build.cmd clean
Note: The size of NuGet packages is approximately 2.75 GB, so download might take a few moments based on the speed of your internet connection. The build artifacts require additional ~1 GB, thus make sure you have at least 4 GB of free space.
- Open c:\corert\src\ILCompiler\ILCompiler.sln in VS
-
Set "ILCompiler" project in solution explorer as your startup project
-
Set startup command line to:
@c:\corert\bin\obj\Windows_NT.x64.Debug\ryujit.rsp
-
Build & run using F5
- This will run the compiler. The output is
c:\corert\bin\obj\Windows_NT.x64.Debug\repro\native\repro.obj
file.
- This will run the compiler. The output is
-
The repro project has a dummy program that you can modify for ad-hoc testing
-
To suppress spew from NuGet during the build, go to NuGet Package Manager in Options, and uncheck
Allow NuGet to download missing packages
.
- Open
c:\corert\src\ILCompiler\reproNative\reproNative.vcxproj
- Set breakpoint at
__managed__Main
in main.cpp - Build & run using F5
- Once you hit the breakpoint, go to disassembly and step into - you are looking at the code generated by RyuJIT
- Open
c:\corert\src\ILCompiler\ILCompiler.sln
in VS
-
Set "ILCompiler" project in solution explorer as your startup project
-
Set startup command line to:
@c:\corert\bin\obj\Windows_NT.x64.Debug\cpp.rsp
--codegenopt:nolinenumbers
command line option can be used to suppress generation of line number mappings in C++ files - useful for debugging
-
Build & run using F5
- This will run the compiler. The output is
c:\corert\bin\obj\Windows_NT.x64.Debug\repro\native\repro.cpp
file.
- This will run the compiler. The output is
-
The repro project has a dummy program that you can modify for ad-hoc testing
- Open
c:\corert\src\ILCompiler\reproNative\reproNativeCpp.vcxproj
- Set breakpoint at repro::Program::Main in main.cpp
- Build, run & step through as with any other C++ program
If you want to write your repro code using IL (instead of C#), you can search/replace "repro\repro.csproj"
to "repro\repro.ilproj"
in ILCompiler.sln which switches to repro.ilproj instead of repro.csproj. Just write your IL code in repro.il
and build/debug as usual. All the instructions above still would work as expected. Just make sure don't check-in that change.