python pdb 参数,用多个参数启动python pdb?

我想知道是否有办法用多个参数启动pdb.

目前我知道我可以这样做:

python -m pdb script.py

然后手动设置断点,使用:

(Pdb) break

(Pdb) break 2

Breakpoint 1 at /home/ozn/test2.py:2

(Pdb) break 3

Breakpoint 2 at /home/ozn/test2.py:3

(Pdb) break

我也可以插入:

pdb.set_trace() (or with ipdb.set_trace()

在不同的行(这是由vim中的python-mode之类的东西缓解).

但是,如果我采取这种方法,例如

# note: break points from python-mode in vim

print "hello "

a = 1

import ipdb; ipdb.set_trace() # XXX BREAKPOINT

a =+1

import ipdb; ipdb.set_trace() # XXX BREAKPOINT

print a

i = 9

我在内部pdb时无法列出命令中断的所有断点.

下面是示例:我运行文件,它生成输出,并切换到pdb会话,但命令中断为空:

[2] ozn@deboz:~ $python 1.py

hello

> /home/ozn/1.py(4)()

3 import ipdb; ipdb.set_trace() # XXX BREAKPOINT

----> 4 a =+1

5 import ipdb; ipdb.set_trace() # XXX BREAKPOINT

ipdb> list

1 print "hello "

2 a = 1

3 import ipdb; ipdb.set_trace() # XXX BREAKPOINT

----> 4 a =+1

5 import ipdb; ipdb.set_trace() # XXX BREAKPOINT

6 print a

7

8 i = 9

ipdb> break

ipdb>

理想情况下,我想像这样启动pdb:

python -m pdb script.py b 2 b 3

在内部时,提示应该这样做:

(Pdb) break

(Pdb) break 2

Breakpoint 1 at /home/ozn/test2.py:2

(Pdb) break 3

Breakpoint 2 at /home/ozn/test2.py:3

(Pdb) break

或者,我很乐意在运行带有一些断点的python模式时从vim内部运行我的脚本.现在,它只是挂起.这意味着,如果我在代码中有断点时按< lead> r,它会挂起,或者在最好的情况下会产生这样的垃圾:

~

~

~

~

~

~

~

Code running.> /home/ozn/1.py(4)()

3 import ipdb; ipdb.set_trace() # XXX BREAKPOINT

----> 4 a =+1

5 import ipdb; ipdb.set_trace() # XXX BREAKPOINT

ipdb>

设置断点时要导入pdb; pdb.set_trace(),vim完全挂起并产生以下消息:

Code running.

问题:

>我的vim python模式可以更好地配置,以便它具有断点的行为吗?

>您是否知道运行“调试脚本”或使用多个参数启动pdb的方法?

奖金问题:

>插件vdebug的任何替代品?

解决方法:

问题1:

是.使用python-mode时我也遇到了同样的问题. Vim完全挂起,只显示“代码正在运行”.

我发现问题发生在’〜/ .vim / bundle / python-mode / autoload / pymode / run.vim’. < leader> r使这个脚本运行,脚本停留在’py execfile’行(vim.eval(‘expand(“%:p”)’),context)’.我没有努力在脚本中解决这个错误.相反,我使用一个简单的脚本来使一切运行.

我创建一个’python.vim’文件,粘贴以下代码并将文件放在’〜/ .vim / plugin / after / ftdetect / python.vim'(如果你没有这个文件夹,创建一个).

" Python

if executable("python")

autocmd BufRead,BufNewFile *.py map :w:!python %

else

autocmd BufRead,BufNewFile *.py map :echo "you need to install Python first!"

endif

我们需要的是在vim中运行python代码和pdb,对吗?它现在有效!

但是,按< F5>时在vim的python文件中,它将跳出vim以在终端中运行python,并且当python程序完成时,它将自动跳回到vim.如果你喜欢它就没关系.

但是,我找到了一个更好的方法.只需安装一个名为’conque’的vim插件,https://code.google.com/p/conque/,然后安装’iPython’.

然后,您应该更改’python.vim’代码,如下所示.

" Python

if executable("python")

autocmd BufRead,BufNewFile *.py map :execute 'ConqueTermSplit ipython '.expand('%:p')

else

autocmd BufRead,BufNewFile *.py map :echo "you need to install Python first!"

endif

现在,当你按下< F5>时,它将拆分一个窗口,为你在vim内部运行python代码.

问题2& 3:

我不知道运行pdb的多参数方式.也许你可以自定义上面的代码来实现这一点.但我可以推荐你在vim中使用一个很酷的图形python调试工具,叫做’vim-debug’.

希望这些帮助!

标签:python,vim,pdb

来源: https://codeday.me/bug/20190901/1780547.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值