如何在python函数中正确使用pdb,该函数是用`compile()生成的`

如何在python函数中正确使用pdb,该函数是用`compile()生成的`,python,pdb,Python,Pdb,我想调试动态生成的函数,所以我尝试使用那里的标准python调试器。它基本上可以工作(我可以使用变量、函数等),但它没有显示生成的函数代码,所以我不知道执行流在哪里 请建议如何在编译后的函数中列出源代码? 谢谢 示例文件源 import ast, types, pdb func_code = """ def test(a, b, pdb): pdb.set_trace() return a + b """ funct

我想调试动态生成的函数,所以我尝试使用那里的标准python调试器。它基本上可以工作(我可以使用变量、函数等),但它没有显示生成的函数代码,所以我不知道执行流在哪里

请建议如何在编译后的函数中列出源代码? 谢谢

示例文件源

import ast, types, pdb

func_code = """
def test(a, b, pdb):
    pdb.set_trace()
    return a + b
"""

function_code = compile(
    source=func_code,
    filename="test_filename",
    mode='exec',
)

new_func = types.FunctionType(
    function_code.co_consts[0],
    {},
    'new_func_name'
)

if __name__ == "__main__":
    print(new_func(1, 2, pdb))
执行输出

 python test_pdb.py
> /Users/viktor/test_filename(4)test()
(Pdb) l
[EOF]
(Pdb) ll
*** source code not available
(Pdb) locals()
{'a': 1, 'b': 2, 'pdb': <module 'pdb' from '/usr/local/Cellar/python@3.8/3.8.2/Frameworks/Python.framework/Versions/3.8/lib/python3.8/pdb.py'>}
(Pdb) c
3
python测试_pdb.py
>/Users/viktor/test_文件名(4)test()
(Pdb)l
[EOF]
(Pdb)ll
***源代码不可用
(Pdb)本地人()
{'a':1,'b':2,'pdb':}
(Pdb)c
3.