python中 debug 使用,如何从命令行调试使用python -m运行的Python模块?

I know that a Python script can be debugged from the command line with

python -m pdb my_script.py

if my_script.py is a script intended to be run with python my_script.py.

However, a python module my_module.py should be run with python -m my_module. Even scripts that contain relative imports should be run with python -m. How can I run python -m my_module under pdb's control? The following does not work:

python -m pdb -m my_module

解决方案

You can't do it now, because -m terminates option list

python -h

...

-m mod : run library module as a script (terminates option list)

...

That means it's mod's job to interpret the rest of the arguments list and this behavior fully depends on how mod is designed internally and whether it support another -m

Lets check out what's happening inside pdb of python 2.x. Actually, nothing intereseting, it only expects a script name to be supplied:

if not sys.argv[1:] or sys.argv[1] in ("--help", "-h"):

print "usage: pdb.py scriptfile [arg] ..."

sys.exit(2)

mainpyfile = sys.argv[1] # Get script filename

if not os.path.exists(mainpyfile):

print 'Error:', mainpyfile, 'does not exist'

sys.exit(1)

del sys.argv[0] # Hide "pdb.py" from argument list

# Replace pdb's dir with script's dir in front of module search path.

sys.path[0] = os.path.dirname(mainpyfile)

# Note on saving/restoring sys.argv: it's a good idea when sys.argv was

# modified by the script being debugged. It's a bad idea when it was

# changed by the user from the command line. There is a "restart" command

# which allows explicit specification of command line arguments.

pdb = Pdb()

while True:

try:

pdb._runscript(mainpyfile)

Same for the currently released versions of

Good news

The pull request that allows to do what you're asking has been merged 5 days ago. What a mysterious coincidence! Here's the code

So just wait a bit for the upcoming python 3.x versions to have this issue resolved )

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值