JetBrain Rider:在调试期间查看 List<>

Posted

技术标签:

【中文标题】JetBrain Rider:在调试期间查看 List<>【英文标题】:JetBrain Rider: viewing List<> during debugging 【发布时间】:2018-09-03 11:16:57 【问题描述】:

我试图在调试期间查看 List 的内容。不幸的是,我看不到它们,因为我在变量窗口中收到以下消息:

corvalue.GetExactTypeSafe(输出类型)。对象在一个 僵尸状态。 (HRESULT 例外:0x8013134F)。错误代码是 CORDBG_E_OBJECT_NEUTERED,或 0x8013134F。

有人知道这意味着什么以及如何查看列表?这不是编译错误,因为我可以正常运行代码。

【问题讨论】:

我认为调试器在您尝试查看它的内容时无法访问该变量,因为父踏板处于僵尸状态,这可能吗? her you can find a long explanation of the problem. 【参考方案1】:

听起来您正在使用多线程。让我们从zombie state 开始。zombie state 是先前(由另一个线程)启动的线程最终完成工作的时间。此外,该线程没有将控制权返回给调用线程。因此,这个线程目前没有做任何事情,尽管它没有被终止。这是名称的来源,线程没有活着也没有死。有关更多信息,您可以查看此post。 您只需通过重新启动程序或终止父线程\进程来释放所有分配的资源。 如果您在“有趣的代码”中一直遇到问题,您还可以尝试在没有多线程的情况下运行程序,以确保您不会在此过程中遇到任何僵尸。 (:

【讨论】:

您好,谢谢您的回复。如何运行不使用多线程的程序?这个骑士是特定的吗?因为在 VS 中我可以毫无问题地查看集合...问候 我的意思是您可以将感兴趣的区域临时转换为单线程代码。如果只是为了调试。 我不认为这篇文章回答了最初的问题。我将赏金放在了在 RIder 的调试器中查看变量的解决方案上。 VS 显示它们的价值没有问题。这个答案只是对僵尸状态的解释(不是问题)以及重写代码以不使用多线程的建议(在我的情况下是不可能的,也不是问题的解决方案)。

以上是关于JetBrain Rider:在调试期间查看 List<>的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Jetbrain 的 Rider IDE 中运行项目?

JetBrain Rider,使用带有 Windows 身份验证的 IIS Express 时访问被拒绝

错误:50 - 发生本地数据库运行时错误。指定的 LocalDB 实例名称在 JETBRAIN RIDER 上无效

如何在 Rider 中调试类库项目

Jetbrains Rider 中的启动项目选项

在 Rider 中从 docker-compose 调试 .net 核心容器是错误的