在Windows上编译和调试CoreCLR
Posted KMSFan
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在Windows上编译和调试CoreCLR相关的知识,希望对你有一定的参考价值。
生成CoreCLR - Windows篇
本文的唯一目的就是让你运行Hello World
运行环境
Window 7+
Visual studio 2015
确保C++ 工具已经被安装,默认是不安装的,所以要选择自定义模式,VS 2015 精简版不支持。
CMake
下载 CMake for windows,并把Cmake的目录添加到为PATH的系统变量里。
Python
下载Python for windows 并安装,并把Python的目录地址添加到Path系统变量中。
Powershell
powershell版本必须大于等于3.0,因为我用的是WIN10,默认为4.0,所以不用特别升级。
Git
新建一个目录,名字为git,当然名字随便取,放在一个你觉得适合的地方。然后在bash中执行如下命令克隆Repo.
C:\\git>git clone https://github.com/dotnet/coreclr
C:\\git>git clone https://github.com/dotnet/corefx
Demo 目录
新建一个目录,然后新建2个文件夹,一个取名叫runtime,一个取名叫packages.
Nuget
下载Nuget客户端 并放在一个你觉得合适的地方。
Build
进入刚刚克隆好的目录,然后执行build clean命令,系统会先安装coreclr cli,这是个很长的过程,估计整个流程全跑完要30~40分钟,所以耐心等吧。
对于CoreFx,那么就只要执行Build 就够了。
复制DLL
一张图足矣,CoreClr需要复制上面的文件,而CoreFx,只需要复制需要的,对于你这个CS文件来说需要的。文件从bin/product目录底下找。
生成EXE
使用VS2015的命令行工具,执行如下命令,当然路径什么的自己改。
csc /nostdlib /noconfig /r:runtime\\mscorlib.dll /out:runtime\\helloworld.exe helloworld.cs
Debug
大公告完了?没呢,没DEBUG算什么完成。
- 找到CoreCLR.sln这个项目(当然前提是编译过了,不然直接从GIT上下载的没这个东西),我电脑里面的目录是:D:\\coreclr2\\coreclr\\bin\\obj\\Windows_NT.x64.Debug。
- 找到Install并设为启动项目
- 右键Install项目->属性->调试,设置命令为:$(SolutionDir)..\\..\\product\\Windows_NT.$(Platform).$(Configuration)\\corerun.exe,命令参数:HelloWorld.exe,工作目录为:$(SolutionDir)..\\..\\product\\Windows_NT.$(Platform).$(Configuration),
- 按下F11,忽略一切阻碍!
问题汇总
解决方法 ,不过这种方法并不是最好的,因为会拖慢速度,因为是从远程下载PDB。
但是遗憾的是,我的CoreCLR启动失败了。@dudu,求教为什么会失败?
PS:编辑于2016-5-28 ,使用Windbg进行调试时候Symbol file could not be found的问题解决方法,使用Windbg进行调试的教程请参见本文的评论,如果出现了符号未加载,那么怎么解决呢?首先在VS中的选项->调试里面 找到符号的缓存地,如果还有不清楚的,请参见本文的其他地方;设置好以后,按一下F5运行一下程序,这个时候回自动从微软的符号服务器中下载PDB文件,并缓存到此目录。
然后打开Windbg并运行此EXE文件,在窗口中输入如下命令:
.sympath D:\\symbolCache;srv*c:\\debugmsft*http://msdl.microsoft.com/download/symbols
然后再.restart重启就OK了。
以上是关于在Windows上编译和调试CoreCLR的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Windows 上编译和使用 java-dbus 2.7?
Loadbitmap 在 x86 上编译和运行良好,但在编译为 x64 时无法正常工作
在不同版本的 XCode 上编译和运行相同的代码以针对不同的 iOS 版本
C++/LapackE 代码在 Windows 上编译良好,但相同的代码在 Linux 上编译失败