标签: ipdb

Windows 上的 ipdb / set_trace() 错误?

当运行 python 脚本并使用 ipdb 设置断点时,我得到了一个非常奇怪的输出,如下程序所示:

\n\n
import sys\nimport ipdb\nparents, babies = (1, 1)\nwhile babies < 100:\n    ipdb.set_trace()\n    print 'This generation has {0} babies'.format(babies)\n    ipdb.set_trace()\n    parents, babies = (babies, parents + babies)\n
Run Code Online (Sandbox Code Playgroud)\n\n

第一次运行脚本时一切正常,在第一个断点处停止并打印所有变量。但是,一旦我接近第二个断点,无论我是单步执行还是继续,我都会在控制台中输出这些奇怪的字符:

\n\n
C:\\pythontest>python ipdb_test2.py\n> c:\\pythontest\\ipdb_test2.py(6)<module>()\n      5         ipdb.set_trace()\n----> 6         print 'This generation has {0} babies'.format(babies)\n      7         ipdb.set_trace()\n\nipdb> n\nThis generation has 1 babies\n> c:\\pythontest\\ipdb_test2.py(7)<module>()\n      6         print 'This generation has {0} babies'.format(babies)\n----> 7         ipdb.set_trace()\n      8         parents, babies = (babies, parents + babies)\n\nipdb> n\n> \xe2\x86\x90[1;32mc:\\pythontest\\ipdb_test2.py\xe2\x86\x90[0m(8)\xe2\x86\x90[0;36m<module>\xe2\x86\x90[1;34m()\xe2\x86\x90[0m\n\xe2\x86\x90[1;32m      6 \xe2\x86\x90[1;33m        \xe2\x86\x90[1;32mprint\xe2\x86\x90[0m \xe2\x86\x90[1;34m'This generation has {0} …
Run Code Online (Sandbox Code Playgroud)

python ipdb

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

使用Spyder时,没有使用ipdb提示自动完成

我正在使用Spyder进行python编程.我使用debugfile(F7)命令/函数时遇到问题.一旦进入ipdb提示符,我就没有自动完成功能,向上箭头操作(对于命令历史记录)不起作用.

当我在终端上使用IPython时(我在MacOS上)一切正常.

我使用macport安装了Spyder,ipdb和IPython.当我尝试使用anaconda安装时,会出现同样的问题.

你知道发生了什么吗?

谢谢

python ipython spyder ipdb

2
推荐指数
1
解决办法
1212
查看次数

Jupyter 中的调试和运行模式

就像在 matlab 中一样,Jupyter 中是否有可能在调试模式下运行函数,其中执行在断点处暂停,而在运行模式下函数会忽略断点?在一个简单的例子中,比如

from IPython.core.debugger import set_trace

def debug(y):
    x = 10
    x = x + y 
    set_trace()
    for i in range(10):
        x = x+i
    return x

debug(10)
Run Code Online (Sandbox Code Playgroud)

我们是否有可能调用该函数以使 set_trace 被忽略并且函数正常运行?

我想要这个的原因是,在我的函数中,我放置了很多设置跟踪,当我只想在没有跟踪的情况下运行时,我需要注释所有设置跟踪。有更容易的方法吗?

python ipython pdb ipdb jupyter-notebook

2
推荐指数
1
解决办法
2036
查看次数

使用 ipdb 时如何获取方法的“args”参数值?

ipdb使用命令aargs打印有关方法提供的参数的信息时。如何获取实际args变量以便我可以处理提供的数据?

例如,当我有代码时:

class A(object):
    def test(*args, **kwargs):
        import ipdb; ipdb.set_trace()


A().test('testing arg')
Run Code Online (Sandbox Code Playgroud)

然后在运行代码后我试过:

ipdb> args
args = (<__main__.A object at 0x1007bdf90>, 'testing arg')
kwargs = {}
ipdb> args[0]
args = (<__main__.A object at 0x1007bdf90>, 'testing arg')
kwargs = {}
ipdb>
Run Code Online (Sandbox Code Playgroud)

python debugging ipdb

2
推荐指数
1
解决办法
601
查看次数

Itertools.product提出"参数错误"

我有点迷失在这里:

我不能itertools.product在我的代码中使用.这是unittest setUp方法的一个突破点:

ipdb> import itertools
ipdb> itertools
<module 'itertools' (built-in)>
ipdb> itertools.product
<class 'itertools.product'>
ipdb> list(itertools.product([2,7], [1,4]))
*** Error in argument: '(itertools.product([2,7], [1,4]))'
Run Code Online (Sandbox Code Playgroud)

我很确定我没有对模块本身做任何奇怪的事情,因为这是在我的代码库中(没有非公开的更改):

$ git grep itertools
simple_wbd/climate.py:import itertools
Run Code Online (Sandbox Code Playgroud)

如果我在Ipython解释器中尝试这个,它工作正常.

In [1]: import itertools

In [2]: list(itertools.product([2,7], [1,4]))
Out[2]: [(2, 1), (2, 4), (7, 1), (7, 4)]
Run Code Online (Sandbox Code Playgroud)

我甚至不知道如何调试这个.你能帮忙的话,我会很高兴.

谢谢.

python ipython python-itertools python-3.x ipdb

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

如何将快速修复列表写入文件

我正在寻找一种将 quickfix 窗口的内容写入具有特定格式的文件的方法,最好采用易于编写脚本的方式。

我想要实现的是 Vim 和 ipdb 的轻量级集成:

  1. 我将“断点”设置为带有映射的快速修复列表中的项目: nmap <leader>s :call setqflist([], 'a', {'items': [{'filename': @%, 'lnum':line('.'), 'text':'break'}]})
  2. .pdbrc使用break file_path:line_number格式将快速修复的内容写入文件
  3. 在指定的脚本上运行 ipdb

vim ipdb

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