debugging - 为什么 bpython3 不能调试?

标签 debugging python-3.x pdb bpython

显然我已经忘记了如何使用 python 进行调试。

我跑bpython3 -i myfile.py ,但是当发生异常时,我仍然无法访问程序变量,也找不到像 gdb 这样的任何命令的updown .

我试过 import pdb并玩弄它,但我没有得到太多。而且它绝对没有以任何方式集成到 bpython 中。

据我记得,它非常简单,例如 gdb ,但显然我记错了,现在我一无所知。网上关于python调试器的信息很困惑,很模糊,找不到和我之前用的类似的东西,所以来这里问一下:是不是漏掉了一些明显的东西?

最佳答案

bpython3只是一个交互式 Python shell 的接口(interface)。对于类似 gdb 的调试,请使用 pdb ,它支持类似 gdb 的命令:

$ python3 -m pdb t.py 
> /tmp/t.py(2)<module>()
-> def a():
(Pdb) c
Traceback (most recent call last):
  File "/usr/lib/python3.2/pdb.py", line 1556, in main
    pdb._runscript(mainpyfile)
  File "/usr/lib/python3.2/pdb.py", line 1437, in _runscript
    self.run(statement)
  File "/usr/lib/python3.2/bdb.py", line 405, in run
    exec(cmd, globals, locals)
  File "<string>", line 1, in <module>
  File "/tmp/t.py", line 2, in <module>
    def a():
  File "/tmp/t.py", line 4, in a
    b()
  File "/tmp/t.py", line 7, in b
    1/0
ZeroDivisionError: division by zero
Uncaught exception. Entering post mortem debugging
Running 'cont' or 'step' will restart the program
> /tmp/t.py(7)b()
-> 1/0
(Pdb) up
> /tmp/t.py(4)a()
-> b()
(Pdb) print x
1

如果你想使用 bpython(3) 作为你的调试器,你必须 include some glue code .

关于debugging - 为什么 bpython3 不能调试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11249075/

相关文章:

python - 在 Python 3 中将 Unicode 序列转换为字符串

python - 前端的 Django 管理员

python - bs4 `next_sibling` VS `find_next_sibling`

python - 在 python pdb 中打印\n 换行符作为实际换行符

python - eventlet.monkey_patch() 破坏了 docker 容器中的 ipdb

ios - 无法找到零星的 SIGABRT 错误!如何寻找原因?

ios - 如何在 iOS 上通过 Xcode 调试 Lightning Accessory

typescript - 在同一 session 中调试 VSCode 中的 Typescript 和 C#

c++ - 无法找到或打开 PDB 文件消息,pdb 存在

调试失败!在图书馆