银河麒麟安装LLDB的方法以及调试 dump 文件 (未完成)

今天同事要进行 lldb进行调试dotnet的bug 

本来在x86 上面进行相应的处理 但是发现报错. 没办法 正好有一台借来的arm服务器就搞了一下. 

简单记录一下安装方法

1. 安装 apt的source.list

增加一行  银河麒麟的 官方源

deb http://archive.kylinos.cn/kylin/KYLIN-ALL 4.0.2sp2-server-ft2000 main restricted universe multiverse

2. 安装lldb 之前百度了下 发现  apt-get install lldb 是找不到的 必须要带版本号

安装命令为

apt-get install lldb-3.9

大概有 200M的安装文件.

注意一下版本号的问题

dotnet :2.1.1。查看官方文档2.0.0只能使用lldb 3.62.1以上必须是3.9.0;所以特别要注意版本问题,一个是createdump 2.0的有bug会失败。二个是dotnet版本和lldb版本要匹配
被调试分析的应用也是用2.1跑起来的。

安装完之后可以简单使用了 注意一点的是 使用命令为

lldb-3.9

注意 如果调试 dotnet 的时候 需要安装 dotnet-sos 的部分

安装命令为 
1. 安装dotnet tools

dotnet tool install -g dotnet-sos

2. 安装 sos 相关内容
这个命令默认将dotnet-sos 放到了 用户的家目录下面 比如我的是root用户就放到了
/root/.dotnet/tools 目录下面 cd 到这个目录 并且执行命令
./dotnet-sos install

注意 我这边可能环境变量少一个内容 所以一开始报错了 如:

root@inspur:~/.dotnet/tools# ./dotnet-sos install
A fatal error occurred, the required library libhostfxr.so could not be found.
If this is a self-contained application, that library should exist in [/root/.dotnet/tools/.store/dotnet-sos/3.1.137102/dotnet-sos/3.1.137102/tools/netcoreapp2.1/any/].
If this is a framework-dependent application, install the runtime in the default location [/usr/share/dotnet] or use the DOTNET_ROOT environment variable to specify the runtime location.

需要执行一个命令 
export DOTNET_ROOT=/dotnet

然后在安装就可以了:
root@inspur:~/.dotnet/tools# ./dotnet-sos install
Installing SOS to /root/.dotnet/sos from /root/.dotnet/tools/.store/dotnet-sos/3.1.137102/dotnet-sos/3.1.137102/tools/netcoreapp2.1/any/linux-arm64
Creating installation directory...
Copying files...
Creating new /root/.lldbinit file - LLDB will load SOS automatically at startup
SOS install succeeded

 3. 好像直接 lldb yourdumpfile 就可以 打开了 

但是 问题出现了 会报错..

root@inspur:~# lldb-3.9 dotnet_time_2020-08-04_16:52:18.24453 
(lldb) target create "dotnet_time_2020-08-04_16:52:18.24453"
Current executable set to 'dotnet_time_2020-08-04_16:52:18.24453' (aarch64).
(lldb) plugin load /dotnet/shared/Microsoft.NETCore.App/2.1.3/libsos.so
error: plug-in is missing the required initialization: lldb::PluginInitialize(lldb::SBDebugger)


这一块需要专家给处理一下了 我搞不定了.

这个错误需要专家指导..

不过如果安装了 dotnet-sos 那么可以使用 soshelp 的命令

如下:

原文地址:https://www.cnblogs.com/jinanxiaolaohu/p/13441015.html