PyCharm Run ---为什么它有时会显示一个追溯和错误,有时候不显示?

时间:2017-10-19 19:21:16

标签: pycharm

我注意到如果我在PyCharm中运行完全相同的Python 3代码,“运行”选项卡有时会显示完整的回溯和错误消息,但其他时间只会显示“进程已完成退出代码1 ”。

1)有人可以解释为什么会这样吗?

2)是否有某种方法可以强制PyCharm始终显示完整的追溯和错误消息?

编辑:这是一个显示我一直看到的行为的示例。当我运行这20次时,我得到了两次追溯和错误,并且“退出代码1”消息本身18次。为了看到这种行为,代码似乎需要在引发异常之前忙于打印一些东西。如果我只引发异常(没有调用callme()),我总是得到回溯和错误。

#!/usr/bin/python3

def callme():
    print('doing some stuff!')

def main():
    for i in range(1,100):
        callme()
    raise Exception('Something is went wrong!')

if __name__ == '__main__':
    main()

编辑2:我刚刚意识到答案可能就是这样。 PyCharm Run显示窗口仅显示一定数量的行。如果它可以打印的行数小于我正在打印的内容量,那么某些行将不会显示。所以,实际上回溯线仍然存在,但它们只是在其他一些输出之前被打印出来,因此它们在窗口中不可见。通过按“运行”窗口旁边的“向上”按钮,我发现我实际上可以跳到它们(即使它们不可见)。

编辑3:看起来我不是唯一遇到此问题的人: PyCharm output error messages interspersed with console output. How to fix this?

根据这个问题,它被报告为一个错误(https://youtrack.jetbrains.com/issue/PY-16143),但(据我所知)它没有被修复。关于如何解决这个问题的任何想法?

对于那些问:我使用的是PyCharm Community Edition 2016.3.2,我的操作系统是CentOS 6.6。

1 个答案:

答案 0 :(得分:3)

我可以在Ubuntu 16.04 PyCharm 2017.2.3上确认这种行为 如果您希望每次都能看到堆栈跟踪,请尝试使用此代码,无论如何stop using print for debugging:)

import logging

def callme():
    logging.info('doing some stuff!')

def main():
    for i in range(1,100):
        callme()
    raise Exception('Something is went wrong!')

if __name__ == '__main__':
    logging.basicConfig(level='INFO')
    main()