Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ipython调试器:交互式pdb上的完全回溯?_Python_Ipython_Pdb_Ipdb - Fatal编程技术网

ipython调试器:交互式pdb上的完全回溯?

ipython调试器:交互式pdb上的完全回溯?,python,ipython,pdb,ipdb,Python,Ipython,Pdb,Ipdb,我最近从ipython0.10切换到了ipython0.11。在ipython0.11中,当python调试器启动时(即使用%pdb),我只看到完整回溯的一小部分,而在ipython0.10中,我会看到完整回溯。据我所知,完整的回溯无法从pdb命令行直接访问-您可以使用“u”在其中导航,但无法直接看到它 那么,有没有办法显示完整的回溯?例如配置参数 或者,更有用的是,有没有办法让ipython只显示捕获的异常,而不是显示捕获的代码的位置 编辑:示例: In [1]: pdb Automatic

我最近从ipython0.10切换到了ipython0.11。在ipython0.11中,当python调试器启动时(即使用
%pdb
),我只看到完整回溯的一小部分,而在ipython0.10中,我会看到完整回溯。据我所知,完整的回溯无法从pdb命令行直接访问-您可以使用“u”在其中导航,但无法直接看到它

那么,有没有办法显示完整的回溯?例如配置参数

或者,更有用的是,有没有办法让ipython只显示捕获的异常,而不是显示捕获的代码的位置

编辑:示例:

In [1]: pdb
Automatic pdb calling has been turned ON

In [2]: 1/0
> <ipython-input-2-05c9758a9c21>(1)<module>()
     -1 1/0

ipdb> q
---------------------------------------------------------------------------
ZeroDivisionError                         Traceback (most recent call last)
/Users/adam/<ipython-input-2-05c9758a9c21> in <module>()
----> 1 1/0

ZeroDivisionError: integer division or modulo by zero
[1]中的
:pdb
自动pdb呼叫已打开
在[2]中:1/0
> (1)()
-1 1/0
ipdb>q
---------------------------------------------------------------------------
ZeroDivisionError回溯(最近一次呼叫上次)
/Users/adam/in()
----> 1 1/0
ZeroDivisionError:整数除法或模零除法
我想在将
q
从pdb中取出之前查看ZeroDivisionError

有没有办法让ipython只显示 捕获,而不是显示在代码中捕获的位置

您可以使用:

从:

sys.excepthook(类型、值、回溯)

此函数用于打印给定的回溯和异常 sys.stderr

当引发异常并取消捕获时,解释器调用 带有三个参数的sys.excepthook,异常类,异常 实例和一个回溯对象。在本周的互动会议中 在控件返回到提示符之前发生;在Python中 程序这发生在程序退出之前。处理 这样的顶级异常可以通过分配另一个异常来定制 三参数函数,用于
sys.excepthook

sys.\uuuuu显示钩子\uuuuuu

sys.\uuuuuuuuuuuuuuuuuuuuuuuuuuu除外

这些对象包含displayhook和的原始值 程序开始时的excepthook。它们被保存,以便 displayhook和excepthook可以恢复,以防它们发生错误 替换为破损的物体


您还可以尝试将
--xmode
选项设置为
Plain

发件人:

--xmode=Context

[ 19:55 jon@hozbox ~/SO/python ]$ ipython --xmode=Plain ipython-debugger-full-traceback-on-interactive-pdb.py 
------------------------------------------------------------
Traceback (most recent call last):
  File "ipython-debugger-full-traceback-on-interactive-pdb.py", line 2, in <module>
    1 / 0
ZeroDivisionError: integer division or modulo by zero
[ 19:55 jon@hozbox ~/SO/python ]$ ipython --xmode=Context ipython-debugger-full-traceback-on-interactive-pdb.py 
---------------------------------------------------------------------------
ZeroDivisionError                         Traceback (most recent call last)

/home/jon/SO/python/ipython-debugger-full-traceback-on-interactive-pdb.py in <module>()
      1 
----> 2 #!/usr/bin/python
      3 1 / 0
      4 
      5 

ZeroDivisionError: integer division or modulo by zero
[ 19:54 jon@hozbox ~/SO/python ]$ ipython --xmode=Verbose ipython-debugger-full-traceback-on-interactive-pdb.py 
---------------------------------------------------------------------------
ZeroDivisionError                         Traceback (most recent call last)

/home/jon/SO/python/ipython-debugger-full-traceback-on-interactive-pdb.py in <module>()
      1 
----> 2 #!/usr/bin/python
      3 1 / 0
      4 
      5 

ZeroDivisionError: integer division or modulo by zero
[ 19:55 jon@hozbox ~/SO/python ]$ ipython --xmode=Plain

In [1]: 1 / 0
------------------------------------------------------------
Traceback (most recent call last):
  File "<ipython console>", line 1, in <module>
ZeroDivisionError: integer division or modulo by zero
[ 20:03 jon@hozbox ~/SO/python ]$ ipython --xmode=Context

In [1]: 1 / 0
---------------------------------------------------------------------------
ZeroDivisionError                         Traceback (most recent call last)

/home/jon/SO/python/<ipython console> in <module>()

ZeroDivisionError: integer division or modulo by zero
[ 20:01 jon@hozbox ~/SO/python ]$ ipython --xmode=Verbose


In [1]: 1 / 0
---------------------------------------------------------------------------
ZeroDivisionError                         Traceback (most recent call last)

/home/jon/SO/python/<ipython console> in <module>()

ZeroDivisionError: integer division or modulo by zero
并且不指定.py文件:

--xmode=Plain

[ 19:55 jon@hozbox ~/SO/python ]$ ipython --xmode=Plain ipython-debugger-full-traceback-on-interactive-pdb.py 
------------------------------------------------------------
Traceback (most recent call last):
  File "ipython-debugger-full-traceback-on-interactive-pdb.py", line 2, in <module>
    1 / 0
ZeroDivisionError: integer division or modulo by zero
[ 19:55 jon@hozbox ~/SO/python ]$ ipython --xmode=Context ipython-debugger-full-traceback-on-interactive-pdb.py 
---------------------------------------------------------------------------
ZeroDivisionError                         Traceback (most recent call last)

/home/jon/SO/python/ipython-debugger-full-traceback-on-interactive-pdb.py in <module>()
      1 
----> 2 #!/usr/bin/python
      3 1 / 0
      4 
      5 

ZeroDivisionError: integer division or modulo by zero
[ 19:54 jon@hozbox ~/SO/python ]$ ipython --xmode=Verbose ipython-debugger-full-traceback-on-interactive-pdb.py 
---------------------------------------------------------------------------
ZeroDivisionError                         Traceback (most recent call last)

/home/jon/SO/python/ipython-debugger-full-traceback-on-interactive-pdb.py in <module>()
      1 
----> 2 #!/usr/bin/python
      3 1 / 0
      4 
      5 

ZeroDivisionError: integer division or modulo by zero
[ 19:55 jon@hozbox ~/SO/python ]$ ipython --xmode=Plain

In [1]: 1 / 0
------------------------------------------------------------
Traceback (most recent call last):
  File "<ipython console>", line 1, in <module>
ZeroDivisionError: integer division or modulo by zero
[ 20:03 jon@hozbox ~/SO/python ]$ ipython --xmode=Context

In [1]: 1 / 0
---------------------------------------------------------------------------
ZeroDivisionError                         Traceback (most recent call last)

/home/jon/SO/python/<ipython console> in <module>()

ZeroDivisionError: integer division or modulo by zero
[ 20:01 jon@hozbox ~/SO/python ]$ ipython --xmode=Verbose


In [1]: 1 / 0
---------------------------------------------------------------------------
ZeroDivisionError                         Traceback (most recent call last)

/home/jon/SO/python/<ipython console> in <module>()

ZeroDivisionError: integer division or modulo by zero
--xmode=Verbose

[ 19:55 jon@hozbox ~/SO/python ]$ ipython --xmode=Plain ipython-debugger-full-traceback-on-interactive-pdb.py 
------------------------------------------------------------
Traceback (most recent call last):
  File "ipython-debugger-full-traceback-on-interactive-pdb.py", line 2, in <module>
    1 / 0
ZeroDivisionError: integer division or modulo by zero
[ 19:55 jon@hozbox ~/SO/python ]$ ipython --xmode=Context ipython-debugger-full-traceback-on-interactive-pdb.py 
---------------------------------------------------------------------------
ZeroDivisionError                         Traceback (most recent call last)

/home/jon/SO/python/ipython-debugger-full-traceback-on-interactive-pdb.py in <module>()
      1 
----> 2 #!/usr/bin/python
      3 1 / 0
      4 
      5 

ZeroDivisionError: integer division or modulo by zero
[ 19:54 jon@hozbox ~/SO/python ]$ ipython --xmode=Verbose ipython-debugger-full-traceback-on-interactive-pdb.py 
---------------------------------------------------------------------------
ZeroDivisionError                         Traceback (most recent call last)

/home/jon/SO/python/ipython-debugger-full-traceback-on-interactive-pdb.py in <module>()
      1 
----> 2 #!/usr/bin/python
      3 1 / 0
      4 
      5 

ZeroDivisionError: integer division or modulo by zero
[ 19:55 jon@hozbox ~/SO/python ]$ ipython --xmode=Plain

In [1]: 1 / 0
------------------------------------------------------------
Traceback (most recent call last):
  File "<ipython console>", line 1, in <module>
ZeroDivisionError: integer division or modulo by zero
[ 20:03 jon@hozbox ~/SO/python ]$ ipython --xmode=Context

In [1]: 1 / 0
---------------------------------------------------------------------------
ZeroDivisionError                         Traceback (most recent call last)

/home/jon/SO/python/<ipython console> in <module>()

ZeroDivisionError: integer division or modulo by zero
[ 20:01 jon@hozbox ~/SO/python ]$ ipython --xmode=Verbose


In [1]: 1 / 0
---------------------------------------------------------------------------
ZeroDivisionError                         Traceback (most recent call last)

/home/jon/SO/python/<ipython console> in <module>()

ZeroDivisionError: integer division or modulo by zero
[20:01jon@hozbox~/SO/python]$ipython--xmode=Verbose
在[1]中:1/0
---------------------------------------------------------------------------
ZeroDivisionError回溯(最近一次呼叫上次)
/home/jon/SO/python/in()
ZeroDivisionError:整数除法或模零除法


.

消息的第二部分(-xmode)似乎是答案,但似乎不起作用。我试过所有3个modename,回溯看起来都一样。知道是什么原因吗?谢谢。不幸的是,这指出了ipython(我的副本?)中可能存在的错误:
$ipython--xmode=Plain警告:无法识别的别名:“xmode”,它可能没有任何效果。
但是,一旦进入ipython:
在[1]中:%xmode异常报告模式:Plain
工作正常。您可能需要构建ipython的干净副本(或使用easy_install/pip重新安装)。作为一种解决方法,您可以将该
%mode…
行作为init命令添加到~/.ipython/config文件中,并解决问题(希望如此)!这是IPython 0.11中的一个错误-回溯是在您离开调试器后打印的,而不是在调试器启动之前打印的。它将被固定为0.12(应该在圣诞节前发出)。