【问题标题】:In Python PDB, how do I list the source code of a file other than the current file?在 Python PDB 中,如何列出当前文件以外的文件的源代码?
【发布时间】:2019-03-19 21:00:24
【问题描述】:

我需要在当前文件以外的文件中设置断点,但我不想退出 pdb 并进入我的编辑器以找出它应该在哪个行号。

如何列出当前打开的文件不是的源代码行?

【问题讨论】:

  • 是否将 pdb.set_trace() 放入您要查看的文件中不起作用?
  • @RockAndRoleCoder 我不想编辑文件本身——那时我不妨使用打印语句。
  • 您想在多个文件中设置它吗?
  • @RockAndRoleCoder 是的,我想快速设置和删除多个文件的断点,而无需使用像 PyCharm 这样的 IDE。
  • 为什么要这些断点?我假设您想对它们设置某些条件?显然我还是新手,所以我问的越多,我贡献的机会就越大。

标签: python breakpoints pdb


【解决方案1】:

我认为只使用 pdb 是不可能的,但通过简单的步骤也很容易让它工作:

  1. 获取rich 以突出显示您的代码(查看https://pypi.org/project/rich/
  2. 使用inspect 获取您可以导入的任何模块、类、方法、函数、回溯、框架或代码对象的源代码(检查https://docs.python.org/3/library/inspect.html#retrieving-source-code
  3. 打印您想要的内容

例子:

from inspect import getsourcelines

from rich import print

from some_py_file import something


if __name__ == '__main__':
    src = ''.join(getsourcelines(something)[0])
    print(src)

以上代码是在 python 脚本中完成的,但您可以在 pdb 会话中完成。它将打印语法高亮和缩进的代码。

输出:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-30
    • 1970-01-01
    • 2013-02-05
    • 1970-01-01
    • 1970-01-01
    • 2017-11-07
    相关资源
    最近更新 更多