【发布时间】: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.5到lldb-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 PrintException,lldb 就会因分段错误而自行崩溃,下面列出的所有内容:
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