【发布时间】:2020-05-21 08:32:02
【问题描述】:
我尝试在我的 .net 核心服务器上检测内存泄漏并通过 gcore 进行内存转储。尝试在 debian 9 上通过 lldb 和 sos 进行分析。
ulimit -c unlimited
sudo gcore -o dump $(pidof dotnet)
sudo lldb-4.0 $(which dotnet) --core ./dump.MY_PID
(lldb) plugin load /usr/share/dotnet/shared/Microsoft.NETCore.App/2.2.1/libsosplugin.so
sos DumpHeap -stat
所以,我有一张大桌子,上面有 mt、count、size 和 objname
但我所有的课程都是未知的
...
00007f754af190b8 650 26000 UNKNOWN
00007f754b339df0 512 32768 UNKNOWN
00007f7549e8d718 6 35692 System.UInt16[]
00007f754c4e9e10 679 38024 UNKNOWN
00007f7549eb3138 482 61696 System.IO.FileStream
00007f754a155468 203 74208 System.Collections.Generic.Dictionary`2+Entry[[System.String, System.Private.CoreLib],[System.Int32, System.Private.CoreLib]][]
00007f754af198f8 695 90088 UNKNOWN
00007f7549e910d0 173 90696 System.Object[]
00007f7549e8a790 1010 98996 System.Int32[]
00007f7549e94ef0 361 417304 System.Char[]
00007f7549e950f0 1826 677178 System.Byte[]
00007f7549ea8a20 12844 1046724 System.String
00000000009628b0 809 2671130 Free
我认为,我应该设置符号。但是...我将它复制到 CLR 文件夹 /usr/share/dotnet/shared/Microsoft.NETCore.App/2.2.1/ 并尝试使用 add-dsym 命令。没有什么变化...
我怎样才能有全栈的正常转储?
【问题讨论】:
标签: .net linux memory-leaks lldb sos