C# 如何在Linux上调试在.NET核心进程中锁定了对象的线程?

C# 如何在Linux上调试在.NET核心进程中锁定了对象的线程?,c#,.net-core,lldb,C#,.net Core,Lldb,我在Linux上运行了一个死锁的.NET核心进程。我已经连接了lldb,我可以看到有数百个线程卡在监视器上。ReliableEnter,它们似乎都试图锁定同一个对象,但我无法确定哪个线程持有它 在使用windbg的Windows上,通过,这是微不足道的!SyncBlk命令,但据我所知,Linux上没有类似的命令。对象的同步块包含持有锁的线程,我可以找到被锁定对象的同步块索引,但我不知道同步块表在内存中的位置 如何确定哪个线程持有该对象的锁?以前,我不知道有什么好方法可以做到这一点(除了使用本机调

我在Linux上运行了一个死锁的.NET核心进程。我已经连接了lldb,我可以看到有数百个线程卡在
监视器上。ReliableEnter
,它们似乎都试图锁定同一个对象,但我无法确定哪个线程持有它

在使用windbg的Windows上,通过
,这是微不足道的!SyncBlk
命令,但据我所知,Linux上没有类似的命令。对象的同步块包含持有锁的线程,我可以找到被锁定对象的同步块索引,但我不知道同步块表在内存中的位置


如何确定哪个线程持有该对象的锁?

以前,我不知道有什么好方法可以做到这一点(除了使用本机调试器+Net Core源代码手动清除内存之外)

好消息是,我们刚刚合并了一个PR来恢复这个系统!SyncBlk功能。 我希望如此!SyncBlk将返回到下一个主要的.Net核心版本。如果您不想等待,您也可以使用master的每日构建,标准的警告是每日构建可能有一些潜在的bug