簡體   English   中英

如何調試在 exec() 中運行的 python 代碼

[英]How to debug python code running inside exec()

我正在嘗試調試我在 exec 命令中運行的插件代碼

有沒有辦法以某種方式調試它? 例如:

code='''
breakpoint()
foo=5
print(foo)
'''
exec(code)

我想在打印 foo 之前停止,然后執行list (pdb) 命令並查看代碼

In [8]: code='import ipdb\nnfoo=5\nipdb.set_trace()\nprint(nfoo**2)'

In [9]: exec(code)
> <string>(4)<module>()

ipdb> nfoo
5
ipdb> nfoo = 6
ipdb> c
36

ipdb.set_trace()之后,ipdb 將啟動。 您可以使用 go 到下一個中斷使用c或使用n到下一行。 檢查以下小抄: 小抄

code='import ipdb\nnfoo=5\nipdb.set_trace()\nprint(nfoo**2)'

In [13]: exec(code)
None
> <string>(4)<module>()

ipdb> nfoo
5
ipdb> nfoo = 6
ipdb> n
36

注意:將代碼放在“”“”“”中更容易。

在 pudb 中找到它,我可以添加:

_MODULE_SOURCE_CODE = code

或者

linecache.lazycache("<path>/code.py",module_globals= None)

或者

linecache.cache[self.path] = (len(code), None, code.splitlines(True), path)

或者在 VScode 中,我可以將文件添加到 vscode 可以找到它的地方並設置:

"justMyCode": false,在 launch.json 文件中

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM