PyCharm Run --- 为什么有时显示回溯和错误,有时不显示?

标签 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。

最佳答案

我可以在 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()

关于PyCharm Run --- 为什么有时显示回溯和错误,有时不显示?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46837355/

相关文章:

python - 导入前 PyCharm 打印?

intellij-idea - 标准输出进度条在 Pycharm 中不起作用

sql - PyCharm SQL 语言注入(inject)支持

django - PyCharm:自动插入 Django 模板结束标签( {% endif %} {% endfor %} 等)选项?

python - pip install 生成错误 : Command errored out with exit status 1

python - LinearDiscriminantAnalysis - .transform(X) 的单列输出

python - 相当于 Python 的 pandas 的 R View

python - 在 Pycharm 2016.3 中安装 pip

python - Pycharm Python tkinter ttk 选项的代码提示

python - 我在 pycharm 中导入 nmap 时遇到问题