LLDB Debug .Net 7 In Ubunt22.04 for Exception
Posted dotNET跨平台
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LLDB Debug .Net 7 In Ubunt22.04 for Exception相关的知识,希望对你有一定的参考价值。
楔子
本来一个错误没必要搞个篇幅,但是遇到了好几次,甚至lldb里面调试莫名其妙的出现错误。本篇来解析下。
问题
调试.net的时候
lldb ./corerun abc.dll //abc.dll是参数.net的dll
lldb错误提示如下:
rror message: Unable to load shared library 'libSystem.Native' or one of its dependencies. In order to help diagnose loading problems, consider using a tool like strace. If you're using glibc, consider setting the LD_DEBUG environment variable:
从这段话可以看出两层意思,一是libSystem.Native.so这个库是个共享库,可能在全局环境变量之类的路径下。二是这个库无法被加载出来,所知导致了出错。
在Ubuntu22.04中dotnet 7安装之后会在以下路径:
.NET runtimes installed:
Microsoft.AspNetCore.App 7.0.1 [/usr/share/dotnet/shared/Microsoft.AspNetCore.App]
Microsoft.NETCore.App 7.0.1 [/usr/share/dotnet/shared/Microsoft.NETCore.App]
路径:usr/share/dotnet/shared/Microsoft.NETCore.App/7.0.1下面刚好包含了
libSystem.Native.so 这个库。
解决
既然lldb提示说,无法加载libSystem.Native.so这个库,那么可以搞个环境变量试下,运行如下命令
export CORE_LIBRARIES=/usr/share/dotnet/shared/Microsoft.NETCore.App/7.0.1
结果提示:
Process 108571 launched: '/home/tang/Downloads/runtime/artifacts/bin/coreclr/Linux.x64.Debug/corerun' (x86_64)
Unhandled exception. System.IO.FileNotFoundException: Could not load file or assembly 'System.Runtime, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'. The system cannot find the file specified.
File name: 'System.Runtime, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'
Process 108571 stopped
又提示了新的错误。
这个错误仔细看了下,无非就是版本不匹配出现的错误,导致进程终止了。仔细看了下lldb arg加载的dll,是.net 6.0.8的版本,而当前.net 版本是7.0.1看上面的dotnet --info命令。
把旧的dll删掉,用当前dotnet版本的dotnet new命令重新生成一个dll。问题解决,如下图所示。
结尾
在Ubuntu22.04上安装dotnet一定要安装,包签名密钥添加到受信任密钥列表,并添加包存储库,命令如下。
wget https://packages.microsoft.com/config/ubuntu/22.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
sudo dpkg -i packages-microsoft-prod.deb
rm packages-microsoft-prod.deb
要完全删除dotnet库,以及残留文件可用以下命令:
sudo apt remove dotnet*
sudo apt remove aspnetcore*
sudo apt remove netstandard*
启动lldb之前一定不要忘记添加环境变量
export CORE_LIBRARIES=/usr/share/dotnet/shared/Microsoft.NETCore.App/7.0.1
以上是关于LLDB Debug .Net 7 In Ubunt22.04 for Exception的主要内容,如果未能解决你的问题,请参考以下文章