【问题标题】:Analysis .NET Core console app Crash dump from Linux (ARM32, Debian, RaspberryPi3B+) via lldb failed通过 lldb 从 Linux(ARM32、Debian、RaspberryPi3B+)分析 .NET Core 控制台应用程序崩溃转储失败
【发布时间】:2019-01-14 05:00:38
【问题描述】:

我在 ARM32 Linux 物联网板 (Raspberry Pi3B+) 上使用 .NET CORE 2.1.1。

我已经收集了我的控制台应用程序的故障转储,通过关注analyzing dump on linux,我正在尝试通过lldb 进行分析。

帖子似乎有点老了,libsosplugin.so 的路径现在改为/opt/dotnet/shared/Microsoft.NETCore.App/2.1.1/,同时,我在命令ldd libsosplugin.so | grep lldb 中看不到任何内容,这是我的ldd libsosplugin.so 结果:

linux-vdso.so.1 (0x7edcb000)

/usr/lib/arm-linux-gnueabihf/libarmmem.so (0x76ee4000)

libstdc++.so.6 => /usr/lib/arm-linux-gnueabihf/libstdc++.so.6 (0x76d87000)

libm.so.6 => /lib/arm-linux-gnueabihf/libm.so.6 (0x76d08000)

libgcc_s.so.1 => /lib/arm-linux-gnueabihf/libgcc_s.so.1 (0x76cdb000)

libc.so.6 => /lib/arm-linux-gnueabihf/libc.so.6 (0x76b9c000)

/lib/ld-linux-armhf.so.3 (0x76f10000)

所以我无法知道lldb的目标是什么,那我必须从lldb-3.5lldb-4.0通过apt-get install lldb-x.x一一尝试。

我注意到,3.5 - 3.9 无法接受我的击键!所有的按键都被解释为一个 Uncode 字符串,最后,lldb-4.0 可以加载转储和插件:

    plugin load /opt/dotnet/shared/Microsoft.NETCore.App/2.1.1/libsosplugin.so
    setclrpath /opt/dotnet/shared/Microsoft.NETCore.App/2.1.1

但是一旦我输入sos PrintExceptionlldb 就会因分段错误而自行崩溃,下面列出的所有内容:

pi@raspberrypi:~/crash_dumps $ lldb-4.0 $(which dotnet) --core ./core.dotnet.1402.raspberrypi.1533274692
(lldb) target create "/usr/local/bin/dotnet" --core "./core.dotnet.1402.raspberrypi.1533274692"
Core file '/home/pi/crash_dumps/./core.dotnet.1402.raspberrypi.1533274692' (arm) was loaded.
(lldb) plugin load /opt/dotnet/shared/Microsoft.NETCore.App/2.1.1/libsosplugin.so
(lldb) setclrpath /opt/dotnet/shared/Microsoft.NETCore.App/2.1.1
(lldb) sos PrintException
(lldb)
Stack dump:
0.      HandleCommand(command = "")
Segmentation fault (core dumped)

【问题讨论】:

  • ldd | grep lldb 不再有效,因为它被认为是一个错误:github.com/dotnet/coreclr/issues/12098。我认为目标是您应该能够使用任何 lldb 版本加载它。
  • 所以对我的问题有什么建议吗?我可以尝试什么?

标签: linux raspberry-pi .net-core


【解决方案1】:

据我所知,libsosplugin.so 附带 .NET Core SDK 2.1.30x (.NET Core 2.1) requires lldb-3.8lldb-3.9,所以我希望 4.0 版本会抛出各种问题包括段错误在内的错误。

不过,不确定为什么会遇到 unicode 问题。当我为 .NET Core 使用 lldb-3.9 时,它确实打印了某些键的字符代码(upCtrl+),但其余的都很好,那是 x64,而不是 ARM。也许这是环境设置引起的单独问题,可以单独搜索。

【讨论】:

  • 我尝试了另一个 ARM32 Linux 板(ASUS Tinker Board S),行为有点不同,但最终分析转储失败,另见github.com/dotnet/diagnostics/issues/58 看起来 lldb 本身有问题ARM 平台。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-03-26
  • 1970-01-01
  • 2017-08-02
  • 1970-01-01
  • 2017-10-15
相关资源
最近更新 更多