快速搭建本地 .NET Core 运行时调试环境

需要的软件环境:

  • Oracle VM VirtualBox

  • CentOS 7

  • llvm lldb 3.6.0 (3.5.0我试过 dumpobj时候一直报无效参数 Invalid parameter T_T)

先在VirtualBox创建新虚机:
一路 Next ,文件位置可以自定义下(默认是在Users/当前用户/.. 目录下)
创建完选在
设置 – 存储 里 选下 CentOS7的镜像文件
设置 – 网络里选 桥接网卡
然后启动虚机 开始安装CentOS7

安装过程基本都是默认选项,键盘、时区选下、软件选择 选 最小安装(Minimal Install)
开始安装,设置下root账号的密码

  • 下面所有命令都是在root权限下完成的

安装后重启
root登录后先改网卡配置:
/etc/sysconfig/network-scripts/ 目录下会有个 ifcfg-e开头的文件,修改其内容:onboot=no改成onboot=yes
然后用 ifup 命令激活网口

安装net-tools
yum -y install net-tools
ifconfig 查看下IP地址

有了IP后就可以用自己习惯的ssh工具连接啦,比如:PuTTY

默认防火墙 systemctl disable firewalld.service
重启 reboot
验证状态 firewall-cmd --state

安装 dotnet SDK
mkdir /home/tool && cd /home/tool

下SDK
curl -sSL -o dotnet-1.1.tar.gz https://go.microsoft.com/fwlink/?LinkID=835019

创建目录 解压
mkdir -p /opt/dotnet && tar zxf dotnet-1.1.tar.gz -C /opt/dotnet

创建链接
ln -s /opt/dotnet/dotnet /usr/local/bin

验证 dotnet --info

如果验证出现如下错误


1

2

Failed to load /opt/dotnet/shared/Microsoft.NETCore.App/1.1.0/libcoreclr.so, error: libunwind.so.8: cannot open shared object file: No such file or directory

Failed to bind to CoreCLR at '/opt/dotnet/shared/Microsoft.NETCore.App/1.1.0/libcoreclr.so'



则安装:yum install libunwind

如果验证出现如下错误


1

Failed to initialize CoreCLR, HRESULT: 0x80131500



则安装:yum install icu

成功则会有版本信息:

接下来安装llvm lldb

相关依赖安装:

  • yum -y install wget

  • yum install gcc

  • yum install gcc-c++

  • yum install swig python-devel libedit-devel

下载llvm的源代码:

  • wget http://releases.llvm.org/3.6.0/llvm-3.6.0.src.tar.xz

  • tar -xf llvm-3.6.0.src.tar.xz

  • mv llvm-3.6.0.src llvm

下载clang的源代码:

  • cd llvm/tools

  • wget http://releases.llvm.org/3.6.0/cfe-3.6.0.src.tar.xz

  • tar -xf cfe-3.6.0.src.tar.xz

  • mv cfe-3.6.0.src clang

下载lldb的源代码:

  • wget http://releases.llvm.org/3.6.0/lldb-3.6.0.src.tar.xz

  • tar -xf lldb-3.6.0.src.tar.xz

  • mv lldb-3.6.0.src lldb

下载compiler-rt的源代码:

  • cd ../projects

  • wget http://releases.llvm.org/3.6.0/compiler-rt-3.6.0.src.tar.xz

  • tar -xf compiler-rt-3.6.0.src.tar.xz

  • mv compiler-rt-3.6.0.src compiler-rt

下载libcxxabi的源代码:

  • wget http://releases.llvm.org/3.6.0/libcxxabi-3.6.0.src.tar.xz

  • tar -xf libcxxabi-3.6.0.src.tar.xz

  • mv libcxxabi-3.6.0.src libcxxabi

下载libcxx的源代码:

  • wget http://releases.llvm.org/3.6.0/libcxx-3.6.0.src.tar.xz

  • tar -xf libcxx-3.6.0.src.tar.xz

  • mv libcxx-3.6.0.src libcxx

配置编译选项:

  • cd ..

  • ./configure --enable-optimized CC=gcc CXX=g++

编译llvm:

  • make

漫长的等待… … …

如果编译过程这样的错误c++: internal compiler error: Killed (program cc1plus 则增加swap分区文件大小后再试:
dd if=/dev/zero of=/swapfile bs=1k count=2048000
mkswap /swapfile
swapon /swapfile

编译成功后 只安装lldb,进入llvm/tools/lldb中运行 make install

创建一个.net core web站点
mkdir -p /home/www/core01 && cd /home/www/core01

dotnet new -t web
dotnet restore
ASPNETCORE_URLS="http://*:5000" dotnet run

启动lldb 附加进程 加载SOS调试扩展

执行SOS命令:soshelp

看到熟悉的托管调试命令 甚是亲切 赶紧试试

此文只是简单快速的搭建 .NET Core 在CentOS7下运行时的调试环境,后续再总结 Windbg 和 LLDB 之间的命令习惯差异。

参考文档:

https://github.com/dotnet/coreclr/blob/master/Documentation/building/debugging-instructions.md
http://www.cnblogs.com/dudu/p/build-coreclr-on-centos.html
http://www.cnblogs.com/dudu/p/4294374.html

相关文章:

  • CLR运行时细节 - Method Descriptor

  • CLR运行时细节 - 继承多态的实现

原文地址:https://espider.github.io/NET-Core/dotnet-core-lldb/


.NET社区新闻,深度好文,微信中搜索dotNET跨平台或扫描二维码关注

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/326629.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

背包问题+图解

图解 代码实现 package com.atguigu.dynamic;/*** 创建人 wdl* 创建时间 2021/4/3* 描述*/ public class KnapsackProblem {public static void main(String[] args) {int[] w{1,4,3};//物品的重量int[] val{1500,3000,2000};//物品的价值 这里的val[i]就是前面的v[i]int m4;/…

java循环结构教程

循环的语法我发一下:while( 布尔表达式 ) {//循环内容}do {//代码语句}while(布尔表达式);for(初始化; 布尔表达式; 更新) {//代码语句}今天录制了一下java 的循环结构视频,包括while,do while以及for循环,时间有点长,所以大家看的…

想和你一起为 Visual Studio 庆祝20岁生日

Visual Studio Live 倒计时开始…… 1997年1月28日,Visual Stuido 97正式推出,她将Visual Basic、Visual C、Visual J、Visual Foxpro、Visual InterDev聚合在一起,并且这个让人着迷的“小妖精”,统揽天下20年尚未有退位的意思。 …

2016蓝桥杯省赛---java---B---3(凑算式)

题目描述 凑算式 思路分析 通分 代码实现 package com.atguigu.TEST;class Main{static int a[]{1,2,3,4,5,6,7,8,9};static int ans;public static boolean check(){int xa[3]*100a[4]*10a[5];int ya[6]*100a[7]*10a[8];if((a[1]*ya[2]*x)%(y*a[2])0&&a[0](a[1…

微软.NET年芳15:我在Azure上搭建Photon服务器(C#.NET)

摘录网上的“.NET 15周年”信息如下: 微软的 .NET 框架本周迎来了 15 岁生日。.NET 的第一个版本在 2002 年 2 月 13 日作为的 Visual Studio.NET 的一部分首次公开亮相。过去 15 年,.NET 框架从一个流行的闭源软件开发平台,变成了一个开源的…

分治算法---汉诺塔

思路分析 代码实现 package com.atguigu.dac;public class Hanoitower {public static void main(String[] args) {hanoiTower(5,A,B,C);}//汉诺塔移动的方法//使用分治算法public static void hanoiTower(int num,char a,char b,char c){//如果只有一个盘if(num1){System.out…

.NET Core跨平台:使用.NET Core开发一个初心源商城总括

1..NET Core基本介绍 a 作为一个.NET的开发者,在以前的开发中,我们开发的项目基本都是部署在windows服务器上,但是在windows服务器上的话某些比较流行的解决访问量的方案基本都是先出现在linux上,而后才能迁移出现windows上,而且效…

二分查找非递归方式实现

思路分析 代码实现 package com.atguigu.binarysearchnorecursion;/*** 创建人 wdl* 创建时间 2021/4/2* 描述*/ public class BinarySearchNoRecur {public static void main(String[] args) {//测试int[] arr{1,3,8,10,11,67,89};int i binarySearch(arr,67);System.out.pr…

jQuery实现判断li的个数从而实现其他功能

需求&#xff1a;当ul中的li大于6个的时候显示图片&#xff0c;当li小于6个的时候隐藏图片&#xff0c;先来看看效果&#xff1a; 当有7个li的时候&#xff1a; 当有3个li的时候&#xff1a; 现在吧源码放上来&#xff1a; <!DOCTYPE html> <html><head…

windows mysql memcached_Memcached在Windows下的安装

前言 &#xff1a; 简介下 Memcached 和 Memcache 的区别和联系Memcached和Memcache的区别&#xff0c;其实很简单&#xff0c;一个是服务端&#xff0c;一个是客户端&#xff0c;就像mysql一样&#xff0c;我们在命令行里输入各种sql语句就能查询到需要的结果&#xff0c;这就…

辅助Visual Studio 2017部署的DevOps新工具

我们能看到Visual Studio 2017中的一个重大改进是对安装程序做了完全重写。前期的Visual Studio构建版本都是大一统的&#xff0c;完成安装需要相当长的时间和大量的磁盘空间。因此有需求要对安装过程做一些改进&#xff0c;这在本质上需要改进Visual Studio及其组件的检测方式…

2016蓝桥杯省赛---java---B---6(方格填数)

题目描述 方格填数 思路分析 全排列检查 代码实现 package com.atguigu.TEST;import static java.lang.Math.abs;class Main{static int a[]{0,1,2,3,4,5,6,7,8,9};static int ans;public static boolean check(){if (abs(a[0] - a[1]) 1 || abs(a[0] - a[3]) 1 || abs…

java中的tostring_java 中重写toString()方法

toString()方法 一般出现在System.out.println(类名.toString());toString()是一种自我描述方法 本身返回的是 getClass().getName() "" Integer.toHexString(hashCode());也就是 类名 hashCode的值重写toString() 只会对类生效&#xff0c;并不能字符串生效; 例如…

走过20年……你出现在哪里?

Visual Studio Live 倒计时ing 20岁的 Visual Studio 陪伴了一代代程序猿的成长&#xff0c;从青葱岁月一直走过而立之年&#xff0c;从一个小后生变成了 wuli欧巴……由单身狗也成了孩子他爸…… 如今二十载已过&#xff0c;你还记得当年大明湖畔的 Visual Studio 么&#xff…

2016蓝桥杯省赛---java---B---7(剪邮票)

题目描述 剪邮票 思路分析 全排列深度优先搜索连通检查 代码实现 package com.atguigu.TEST;class Main{static int a[] { 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1 };static int ans;static boolean vis[]new boolean[12];static void dfs(int g[][], int i, int j) {g[i][…

css解决li边框重合问题

我直接写了个案例&#xff0c;先看下效果图&#xff1a; 下面是html代码&#xff1a; <!DOCTYPE html> <html><head><meta charset"utf-8" /><title>机构动态</title><style type"text/css">*{margin:0px;p…

学习ASP.NET Core,你必须知道“中间件”是什么?中间件如何注册?请求处理管道是如何通过中间件构建的?

ASP.NET Core 的请求处理管道由一个Server和一组有序排列的中间件构成&#xff0c;前者仅仅完成基本的请求监听、接收和响应的工作&#xff0c;请求接收之后和响应之前的所有工作都交给注册的中间件来完成。ASP.NET Core的中间件通过一个类型Func<RequestDelegate, RequestD…

2016蓝桥杯省赛---java---B---8(四平方和)

题目描述 四平方和 代码实现 package com.atguigu.TEST;import java.util.Scanner;class Main{public static void main(String[] args) {Scanner sc new Scanner(System.in);int N0;if (sc.hasNext()){Nsc.nextInt();}for (int a 0; a < 2400; a) {for (int b a; b…

在物理内存中观察CLR托管内存及GC行为

虽然看了一些书&#xff0c;还网络上的一些博文&#xff0c;不过对CLR托管内存细节依然比较模糊。而且因为工作原因总会有很多质疑&#xff0c;想要亲眼看到内存里二进制数据的变化。 所以借助winhex直接查看内存以证实书上的描述或更进一步揣摩CLR托管内存的运作方式&#xff…

2017蓝桥杯省赛---java---B---1(购物单)

题目描述 &#xff08;购物单&#xff09; 思路分析 cmd 打开电脑上的计算器算(算出来的结果是00结尾&#xff0c;作为检测) 答案 5200