python未启动调试程序_从程序运行python调试会话,而不是从控制台运行

几乎唯一可行的方法(据我所知)是从IDE中运行Python作为子进程.这避免了当前Python解释器的“污染”,这使得程序很可能以与独立启动它相同的方式运行. (如果您遇到此问题,请检查子进程环境.)以这种方式,您可以使用“调试模式”运行脚本p = subprocess.Popen(args=[sys.executable, '-m', 'pdb', 'scriptname.py', 'arg1'...
摘要由CSDN通过智能技术生成

几乎唯一可行的方法(据我所知)是从IDE中运行Python作为子进程.这避免了当前Python解释器的“污染”,这使得程序很可能以与独立启动它相同的方式运行. (如果您遇到此问题,请检查子进程环境.)以这种方式,您可以使用“调试模式”运行脚本

p = subprocess.Popen(args=[sys.executable, '-m', 'pdb', 'scriptname.py', 'arg1'],

stdin=subprocess.PIPE,

stdout=subprocess.PIPE,

stderr=subprocess.PIPE)

这将在调试器提示符下启动Python.您需要运行一些调试器命令来设置断点,您可以这样做:

o,e = p.communicate('break scriptname.py:lineno')

如果这样做,o应该是设置断点后Python解释器的正常输出,并且e应该为空.我建议您使用它并在代码中添加一些检查以确保断点是否正确设置.

之后,您可以启动运行的程序

p.communicate('continue')

此时,您可能希望将输入,输出和错误流挂接到您嵌入IDE中的控制台.您可能需要使用事件循环执行此操作,大致如下:

while p.returncode is None:

o,e = p.communicate(console.read())

console.write(o)

console.write(e)

您应该认为该代码段是有效的伪代码,因为根据您的控制台的工作原理,它可能需要一些修补才能使其正确.

如果这看起来过于混乱,你可以使用Python的pdb和bdb模块的功能稍微简化一下这个过程(我分别

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值