在 Linux 上的 lldb 中打开 .NET Core 2.0 转储 - 哪个 lldb 版本?

Open .NET Core 2.0 dump in lldb on Linux - which lldb version?

提问人:Pavel Tupitsyn 提问时间:4/25/2018 最后编辑:Pavel Tupitsyn 更新时间:9/15/2021 访问量:1180

问:

我正在尝试按照 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)

Linux Ubuntu .net-core lldb

评论

0赞 Tarun Lalwani 5/2/2018
单独检查命令并发布其输出,然后find /usr/share/dotnet -name libsosplugin.soldd $(find /usr/share/dotnet -name libsosplugin.so)
0赞 Pavel Tupitsyn 5/2/2018
@TarunLalwani添加到问题中
0赞 Tarun Lalwani 5/2/2018
看看这个 github.com/dotnet/coreclr/issues/13937github.com/mikem8361/coreclr/blob/ 是否有帮助
0赞 Pavel Tupitsyn 5/2/2018
如前所述,我已经尝试了所有这些。链接的文章使用 lldb-3.6,这对我不起作用。
1赞 Tarun Lalwani 5/2/2018
您可以尝试自定义 dotnet docker 映像并在其中安装 lldb 并尝试看看是否有帮助吗?所以基本上和你实际进行转储的环境是一样的

答:

0赞 bruegth 9/15/2021 #1

很老的问题,但也许这对某人有帮助:

例如,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。