提交 057a7855 authored 作者: abergeron's avatar abergeron 提交者: GitHub

Merge pull request #6194 from aam-at/breakpoint

Support more debuggers for PdbBreakpoint
......@@ -608,3 +608,6 @@ Breakpoint during Theano function execution
You can set a breakpoint during the execution of a Theano function with
:class:`PdbBreakpoint <theano.tests.breakpoint.PdbBreakpoint>`.
:class:`PdbBreakpoint <theano.tests.breakpoint.PdbBreakpoint>` automatically
detects available debuggers and uses the first available in the following order:
`pudb`, `ipdb`, or `pdb`.
from __future__ import absolute_import, print_function, division
import numpy as np
import pdb
import imp
import theano
from theano.gof import Op, Apply
......@@ -11,7 +11,8 @@ class PdbBreakpoint(Op):
"""
This is an identity-like op with the side effect of enforcing a
conditional breakpoint, inside a theano function, based on a symbolic
scalar condition.
scalar condition. It automatically detects available debuggers and uses
the first available in the following order: `pudb`, `ipdb`, or `pdb`.
:type name: String
:param name: name of the conditional breakpoint. To be printed when the
......@@ -116,7 +117,16 @@ class PdbBreakpoint(Op):
print("Their contents can be altered and, when execution")
print("resumes, the updated values will be used.")
print("-------------------------------------------------")
pdb.set_trace()
if imp.find_module('pudb'):
import pudb
pudb.set_trace()
elif imp.find_module('ipdb'):
import ipdb
ipdb.set_trace()
else:
import pdb
pdb.set_trace()
# Take the new values in monitored, cast them back to their
# original type and store them in the output_storage
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论