提问人:Pavel Tupitsyn 提问时间:4/25/2018 最后编辑:Pavel Tupitsyn 更新时间:9/15/2021 访问量:1180
在 Linux 上的 lldb 中打开 .NET Core 2.0 转储 - 哪个 lldb 版本?
Open .NET Core 2.0 dump in lldb on Linux - which lldb version?
问:
我正在尝试按照 http://blogs.microsoft.co.il/sasha/2017/02/26/analyzing-a-net-core-core-dump-on-linux/ 的说明在 Ubuntu 2.04 上打开 .NET Core 16.04 转储
转储是从运行进程创建的。createdump PID
我无法确定lldb的正确版本。 不返回任何内容(输出中没有 lldb)。ldd $(find /usr/share/dotnet -name libsosplugin.so) | grep lldb
我已经尝试了最新的 3.5 和 3.6,但无济于事:Can not load or initialize libmscordaccore.so. The target runtime may not be initialized.
如何为 .NET Core 2.0 转储找到正确的 lldb 版本?
更新:带输出的命令
$ find /usr/share/dotnet -name libsosplugin.so
/usr/share/dotnet/shared/Microsoft.NETCore.App/2.0.5/libsosplugin.so
$ ldd $(find /usr/share/dotnet -name libsosplugin.so)
linux-vdso.so.1 => (0x00007ffca344f000)
libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007f3d7eecc000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f3d7ebc3000)
libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f3d7e9ad000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f3d7e5e3000)
答:
很老的问题,但也许这对某人有帮助:
例如,Dockerfile 将 lldb 和 asp dotnet 3.1 包含在内
FROM mcr.microsoft.com/dotnet/core/aspnet:3.1
WORKDIR /vsdbg
RUN apt-get update \
&& apt-get install -y --no-install-recommends \
unzip \
procps \
lldb-3.9 \
&& rm -rf /var/lib/apt/lists/* \
&& curl -sSL https://aka.ms/getvsdbgsh | bash /dev/stdin -v vs2019 -l /vsdbg
WORKDIR /app
另外看看这个网站: https://www.aaron-powell.com/posts/2019-04-04-debugging-dotnet-in-docker-with-vscode/
如果要附加到容器内正在运行的进程,请在 docker run 添加CAP_SYS_PTRACE。
评论
find /usr/share/dotnet -name libsosplugin.so
ldd $(find /usr/share/dotnet -name libsosplugin.so)