我必须从“无托管代码”应用程序池中的IIS下运行的ASP.Net Core 2.2.4 + .Net Framework 4.7.2应用程序调试故障转储。由于某些库与.Net Core不兼容,因此该应用程序不能使用.Net Core而不是完整.Net。这是一个32位应用程序,崩溃转储很好(由MS建议使用32位任务管理器生成)。
我已经看到了许多有关.Net Core或.Net Full的调试指南,但是我似乎无法从Windbg中获得任何有用的信息,而且我怀疑我正在加载错误的SOS / CLR dll。
App是一个WebAPI,在基本稳定性测试(每30秒一个微小的请求)下,该过程在5分钟到2个小时之间的任何时间后达到一个CPU的100%,并且进一步请求超时。经过大约20次这样的测试运行,它从未挂过两个多小时。
我可以轻松地进行一个小型转储,并试图找出它的悬挂位置。在windbg中检查stacktrace并没有帮助,因为在查看!runaway
所暗示的线程时,我只是看到通用的线程处理过程,也没有对代码的引用。我怀疑我没有加载正确的符号。我正在转储正在挂起的应用程序(Kestrel)进程,而不是我知道与此类应用程序池无关的IIS工作程序。
在发布更多详细信息之前,有人可以评论在这种情况下应该加载什么SOS / CLR吗?