page contents

多进程代码调试利器pudb

Python的调试工具有很多,常用的有如下这些: pdb. Python内置的调试工具。ipdb. 将Ipython功能引入pdb调试工具。multiprocessing.dummy. 模拟的多进程。pudb. 只支持Linux与macOS平台。Pychar...

Python的调试工具有很多,常用的有如下这些:

  • pdb. Python内置的调试工具。
  • ipdb. 将Ipython功能引入pdb调试工具。
  • multiprocessing.dummy. 模拟的多进程。
  • pudb. 只支持Linux与macOS平台。
  • Pycharm. 其使用内置的pydev调试功能。
  • vscode. 其使用ptvsd。

这里讲述pudb的使用方法。

pudb调试多进程Python代码

安装

pip install pudb

使用方法

pudb的使用比较简洁,在需要调试的代码中加入set_trace即可。

from pudb import set_trace
set_trace()

然后使用pudb启动主程序:

python -m pudb.run my-script.py

调试过程

这里以multiprocessing多进程代码示例调试过程:

# -*- coding: utf-8 -*-
import os
from multiprocessing import Process
from pudb.remote import set_trace

def info(title):
print(title)
set_trace()
print('module name:', __name__)
print('parent process:', os.getppid())
print('process id:', os.getpid())

def f(name):
info('function f')
print('hello', name)

if __name__ == '__main__':
info('main line')
p = Process(target=f, args=('bob',))
p.start()
p.join()

启动的主程序后界面如下:

Python—多进程代码调试利器pudb

常用操作:

  • ?: 帮助页面。
  • n: 单步调试,当遇到函数调用时,不进入此函数体。
  • s: 单步执行,当遇到函数调用时,则进入此函数体。
  • b: 设置断点。
  • !: 跳转置左下角的Python命令行界面内。
  • ctrl+p: 调出配置界面。
  • o: 查看输出界面,但在子进程界面时此操作将会使界面卡住,官方下个版本将在子进程中禁止此功能。

当程序运行至p = Process(target=f, args=('bob',))代码行启动子进程时,弹出如下提示:

pudb:6899: Please telnet into 127.0.0.1 6899.
pudb:6899: Waiting for client...

这时,使用telnet 127.0.0.1 6899连接子进程的调试界面,连接成功后如下:

Python—多进程代码调试利器pudb

子进程停在print('module name:', __name__)代码行。子进程调试界面的操作与主进程一样,就不再赘述。

当然,调试Popen打开的子进程也类似用法,下面贴出示例代码:

主进程代码:

# -*- coding: utf-8 -*-
from subprocess import Popen, PIPE

if __name__ == '__main__':
cmd = ['python', 'subprocess_run.py']
process = Popen(cmd, stdin=PIPE)
process.stdin.close()
if process.wait() != 0:
print("There were some errors")

子程序代码subprocess_run.py:

# -*- coding: utf-8 -*-
from datetime import date
from pudb.remote import set_trace

def example_run():
today = date.today()
set_trace()
print('today is data: {}'.format(today))

if __name__ == '__main__':
example_run()
  • 发表于 2020-02-15 11:48
  • 阅读 ( 837 )
  • 分类:开发环境

你可能感兴趣的文章

相关问题

0 条评论

请先 登录 后评论
Pack
Pack

1135 篇文章

作家榜 »

  1. 轩辕小不懂 2403 文章
  2. 小柒 1474 文章
  3. Pack 1135 文章
  4. Nen 576 文章
  5. 王昭君 209 文章
  6. 文双 71 文章
  7. 小威 64 文章
  8. Cara 36 文章