【问题标题】:run python source code line by line逐行运行python源代码
【发布时间】:2011-10-06 23:00:40
【问题描述】:

给定一个 Python 源代码,是否可以像调试一样逐行运行代码?

当涉及到函数调用时,我也想“进入”函数。

【问题讨论】:

  • 您所描述的是调试。这就是你要问的问题,我该如何调试 python 程序?
  • 你考虑过Python自带的pdb吗?
  • Python 代码会逐行运行。当它们被调用时,它确实会进入函数。否则它将如何执行?
  • 对不起,我不是在谈论调试,请参阅下面的评论。
  • 即使在读完之后,听起来你仍然想调试它。

标签: python


【解决方案1】:

python -m pdb <script.py> 将运行Python debugger 中的脚本。

【讨论】:

  • 对所有的混乱感到抱歉,我应该更清楚。我问的原因是我想编写一个可以逐行执行python源代码的程序,并且在行之间我想运行我自己的东西并能够访问正在执行的源代码的当前命名空间。
  • 我会为此使用 python 调试器。它可以从代码中调用,而不仅仅是从命令行调用。看看 Pdb 类的源代码。文档说它是可扩展的,所以你应该能够自定义它来做你想做的事情。
【解决方案2】:

如果您使用的是 PyCharm,您可以更改键盘快捷键设置 -

设置>>键盘映射>>其他>>在控制台中执行选择

如果您已从 R 迁移,将其更改为 Ctrl+Enter 将有助于您逐行运行代码。

【讨论】:

  • 如果您使用的是 Mac,则使用 Cmd+Enter。
【解决方案3】:

我建议查看 Eclipse 和 PyDev 进行调试。不过我想有很多选择。

【讨论】:

    【解决方案4】:

    您所描述的是调试。所以这里是大多数代码编辑器(如vs code、virtual studio、PyCharm、PyDev等)使用的python调试器的源代码。看看这个https://github.com/fabioz/PyDev.Debugger

    请注意,这仅用于python代码调试,不适用于其他语言

    或者,您必须了解调试器如何工作的更好选择是查看这篇文章https://opensource.com/article/19/8/debug-python

    【讨论】:

      【解决方案5】:

      看看ipython,你应该可以使用pdb和ipython的组合,就像在ipython里面加载pdb来实现你所需要的。

      【讨论】:

        【解决方案6】:

        在大多数情况下,您应该只需要其他答案中提到的调试工具 - 但如果您真的想逐行跟踪/控制您的程序,我认为您正在寻找

        sys.settrace(tracefunc) - 其中 tracefunc 是一个 Python 函数,将针对一系列不同的事件调用 - 'call'、'line'、'return'、'exception' 或 'opcode'。对于 OP,'line' 事件是这里有趣的事件,它在下一行代码执行之前立即触发。

        例子:

        def trace_dispatch(frame, event, arg):
            if event == 'line':
                record_line_execution(frame)
        
        sys.settrace(trace_dispatch)
        

        顺便说一句 - 我很确定这是调试工具用于work their magic的机制

        【讨论】:

          猜你喜欢
          • 2012-03-29
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-07-02
          • 2019-12-06
          • 1970-01-01
          • 2017-04-25
          • 2022-07-07
          相关资源
          最近更新 更多