PyCharm调试器不显示对象&#39;内容:&#34;无法获取<type'list =“”>&#34;

时间:2017-07-27 06:28:06

标签: macos pycharm pydev

使用PyCharm进行调试(发生在多个版本上)我无法正确查看某些列表和词典(其他列表正确显示)。 在视图窗口中,对象的名称将显示以下消息: {list} Unable to get repr for <type 'list> 要么 {dict} Unable to get repr for <type 'dict'>

更新: 在我的一次尝试中,我从调试器收到以下消息(显示而不是列表变量之一的值):

  

无法显示子项:解析变量Traceback时出错(大多数   最近的呼叫最后):文件&#34; / Applications / PyCharm   CE.app/Contents/helpers/pydev/_pydevd_bundle/pydevd_comm.py" ;, line   1004,在do_it中   _typeName,valDict = pydevd_vars.resolve_compound_variable(self.thread_id,self.frame_id,   self.scope,self.attributes)TypeError:&#39; NoneType&#39;对象不是   可迭代

我对任何可能导致这种行为的想法表示赞赏?

谢谢!

4 个答案:

答案 0 :(得分:3)

原来问题是由于rpyc.py的使用:我调试的进程是通过rpyc调用的,当我调试它时,调用进程在rpyc连接上收到超时。 我认为这会导致变量,通过rpc传递失去完整性,因此调试器无法正确显示它们。

解决方案是将rpyc.py降级到版本3.3.0(我在3.4.2)。 我的同事Nurit Izraelov正确地建议rpyc.py版本可能是罪魁祸首。

全部谢谢!

答案 1 :(得分:1)

您的某些自定义类可能包含错误的__repr____str__,调试器无法打印它。

您可以在此时使用shell来了解哪些元素实际位于dictlist内(并查看哪个对象有错误__repr__或{{1} })。

答案 2 :(得分:1)

有时发生在我身上,导致该行为的原因是某些MyClass在其 str 方法上触发了异常。

在这种情况下,PyCharm调试器仅显示

some_object = {MyClass} Unable to get repr for <class 'my_app.models.MyClass'>

所以我要确认来源是在调试器的“监视”部分中监视repr(some_object)。那里给了我一个明确的错误信息:

{TypeError}%d format: a number is required, not NoneType

这帮助我追溯到起源。

我很欣赏这不是一个通用的答案,而只是对法比奥的补充。

答案 3 :(得分:0)

扩展问题的范围而不是添加答案-所有其他建议都是我通常要做的以使它起作用。

可能是比赛条件吗?

对我来说,这似乎很奇怪。在“变量”窗格中,我可以看到theObjectrepr(theObject)甚至[theObject]的正确表示形式,但是如果我在代码中设置了a = theObjectb = [theObject]的变量,则我收到“无法获得的代表”消息。

在这种情况下,theObject是用自动包装包装的子类D lang结构的实例。