标签: ipdb

在ipdb中运行IPython魔法

我可以使用IPython的魔法,如 %paste%cd在IPDB?有没有办法让ipdb在命令行中解释这些魔法?

ipython ipdb

5
推荐指数
0
解决办法
193
查看次数

如何在警告时自动切换到调试模式?

我想调试一个在代码执行过程中发生的警告.

一个简单的断点不会这样做,因为在第一次警告发生之前,导致警告的行会在没有警告的情况下执行数百万次.

此外,发生这种情况的行是在库代码中(更准确地说,在中pandas/core/common.py),所以我的首选是根本不修改代码.

我只想在发出警告时立即停止程序的执行,并在此时检查堆栈,或者使用pdb或使用ipdb.

有没有办法配置调试器在发出警告时自动进入单步模式?

python ipython pdb ipdb

5
推荐指数
2
解决办法
1108
查看次数

Python调试器没有进入协程?

在下面的示例中:

import asyncio
import ipdb

class EchoServerProtocol:
    def connection_made(self, transport):
        self.transport = transport

    def datagram_received(self, data, addr):
        message = data.decode()
        print('Received %r from %s' % (message, addr))
        print('Send %r to %s' % (message, addr))
        self.transport.sendto(data, addr)

loop = asyncio.get_event_loop()
ipdb.set_trace(context=21)
print("Starting UDP server")
# One protocol instance will be created to serve all client requests
listen = loop.create_datagram_endpoint(    EchoServerProtocol, local_addr=('127.0.0.1', 9999))
transport, protocol = loop.run_until_complete(listen)

try:
    loop.run_forever()
except KeyboardInterrupt:
    pass

transport.close()
loop.close()
Run Code Online (Sandbox Code Playgroud)

我正试图进入

loop.create_datagram_endpoint( EchoServerProtocol, local_addr=('127.0.0.1', 9999))

了解它在内部的表现.然而,当我尝试进入协程时,调试器只是跳过它,好像n已按下而不是 …

pycharm python-3.x ipdb python-asyncio

5
推荐指数
1
解决办法
610
查看次数

如何在 Jupyter Notebook 中正确退出 ipdb 交互式控制台?

Jupyter 笔记本

嗨,退出在 Jupyter Notebook 单元中运行的 ipdb 交互式控制台的正确方法是什么?我试过退出、退出、Ctrl-Z、Ctrl-C、Ctrl-D(在 chrome 中抛出书签请求)

更新:尝试 sys.exit(),它杀死了笔记本的内核。我们如何在不影响笔记本的情况下退出交互式 shell?

debugging ipython-notebook ipdb jupyter-notebook

5
推荐指数
1
解决办法
939
查看次数

在pycharm中使用单独的终端运行ipdb

信息

在过去的几天里,我遇到了PyCharm令人讨厌的事情。我正在尝试使用ipdb而不是pycharm调试器来调试程序,但只能在pycharm i/o console或中打开它python console

无论如何,我可以在终端窗口中打开调试会话吗?甚至在新的终端窗口中?我不希望能够通过调试按钮打开会话,并且不要像python src/main.py在终端中那样写任何行

我想要这样做的主要原因是我可以ipython在终端机上获得自动完成功能,但是找不到在终端机窗口中打开调试会话的方法,还是可以这样做吗?和可以帮助的插件?python控制台给我的自动完成功能非常弱,无法真正帮助我

系统信息

皮查姆2018.3

Centos 7 64位

python pycharm ipdb

5
推荐指数
1
解决办法
205
查看次数

ipython事后调试:外部函数的范围

考虑以下代码:

def inner(a):
    if a == 75:
        raise RuntimeError()
    return a**2

def outer():
    results = []
    for a in range(100):
        results.append(inner(a))
    return results

outer()
Run Code Online (Sandbox Code Playgroud)

在 IPython 中,在引发异常后,%debug行魔术会在以下范围内打开 python 调试器inner()

In [4]: %debug
> <ipython-input-3-eff43b15b2ef>(3)inner()
      2     if a == 75:
----> 3         raise RuntimeError()
      4     return a**2

ipdb> a
a = 75
ipdb> results
*** NameError: name 'results' is not defined
Run Code Online (Sandbox Code Playgroud)

如何告诉 (i)pdb 进入范围outer()以保存到目前为止生成的结果?

python ipython pdb ipdb

4
推荐指数
1
解决办法
892
查看次数

Ipdb没有显示Django鼻子测试的输出

我正在运行最新版本的ipdb 0.10.0,当我使用nosetests插件运行我的django测试套件时,一旦我打了一个import ipdb; ipdb.set_trace()电话,我就看不到提示了.

我已经尝试在nose args中添加一个'-s'参数,它显示了提示,但没有正确捕获它们在ipdb中的键盘输入.例如,我使用向上和向下箭头键丢失输入历史记录.

最后,我再次尝试使用ipdb 0.9.3,它运行正常.

我想知道是否有任何方法可以使用最新版本的ipdb来解决这个问题?有新的配置机制吗?

django nose pdb ipdb

4
推荐指数
1
解决办法
621
查看次数

Jupyter Notebook中的%debug - 访问丢失的回溯帧

当我尝试在Jupyter Notebook中调试我的代码时,%debug我点击了"最旧的帧".

> $HOME/anaconda3/envs/py36/lib/python3.6/site-packages/matplotlib/axes/_base.py(244)_xy_from_xy()
    242         if x.shape[0] != y.shape[0]:
    243             raise ValueError("x and y must have same first dimension, but "
--> 244                              "have shapes {} and {}".format(x.shape, y.shape))
    245         if x.ndim > 2 or y.ndim > 2:
    246             raise ValueError("x and y can be no greater than 2-D, but have "

ipdb> up
> $HOME/anaconda3/envs/py36/lib/python3.6/site-packages/matplotlib/axes/_base.py(385)_plot_args()
    383             x, y = index_of(tup[-1])
    384 
--> 385         x, y = self._xy_from_xy(x, y)
    386 
    387         if self.command == 'plot':

ipdb> up
> …
Run Code Online (Sandbox Code Playgroud)

python debugging pdb ipdb jupyter-notebook

4
推荐指数
1
解决办法
429
查看次数

Python 调试器无法识别定义的变量

我正在尝试使用 Python 的调试模块 pdb 查看列表理解调用的结果。然而,pdb“环境”同时声明变量已定义和未定义,从而导致NameErrorpdb 同意定义的变量。以下是复制该问题的最小代码示例:

import pdb
        
def main():
    bar = [0, 0, 1, 1]
    foo(bar)
        
def foo(bar):
    pdb.set_trace()

    ### pdb COMMANDS LISTED BELOW ARE CALLED HERE ###

    print([False if bar[i] == 0 else True for i in range(len(bar))])
        
main()
Run Code Online (Sandbox Code Playgroud)

在上面指示的代码执行点运行以下 pdb 命令会产生以下结果。

(Pdb) p bar
[0, 0, 1, 1]
(Pdb) p [False if bar[i] == 0 else True for i in range(len(bar))]
*** NameError: name 'bar' is not defined
(Pdb) !print([False if bar[i] == 0 else …
Run Code Online (Sandbox Code Playgroud)

python pdb ipdb

4
推荐指数
1
解决办法
818
查看次数

pdb 事后调试:在异常处理程序中退出后跳转到引发异常

我只是好奇是否存在 ipdb 调试器跳回引发异常的源的命令。

考虑下面的小程序。

import sys
import random

def somefun():
    someval = random.random()
    raise Exception()

def run():
    try:
        somefun()
    except Exception:
        sys.exit(10)
Run Code Online (Sandbox Code Playgroud)

run当从命令行(使用 ipython-console)运行该函数时,它会按应有的值以 10 退出。有没有办法启动事后调试器( )并通过跳回pdb.pm()获取值?someval

exception python-3.x ipdb

3
推荐指数
1
解决办法
1886
查看次数