tick - ¿Es posible usar bpython como un depurador completo?
plt.xlabel size (2)
Si está buscando un depurador de aspecto más atractivo que complete y resalte la sintaxis, es posible que desee echar un vistazo a pdb ++. http://pypi.python.org/pypi/pdbpp/
Es una gota en reemplazo para pdb. Para que puedas seguir usando
import pdb; pdb.set_trace()
y te dejará en el indicador de pdb ++.
Me gustaría usar el intérprete de bpython para la depuración. Mi pregunta es similar a " ¿Es posible ingresar ipython desde el código? ", Que pregunta sobre ipython.
Si usa ipdb.set_trace()
obtiene una sesión completa de ipython con todas sus comodidades. Sin embargo, bpdb.set_trace()
no me da una sesión de bpython, me da el depurador de pdb
estándar.
¿Hay alguna forma de configurar las cosas para que pueda depurar dentro de una sesión de bpython?
Sí, utilizando este contenedor , al que también puede acceder agregando la declaración import bpdb
a su código. Agregue bpdb.set_trace()
donde quiera que quiera romper y, desde el intérprete pdb
ingrese "B" para saltar a una sesión de bpython
con todo desde el marco de pila:
# The MIT License
#
# Copyright (c) 2008 Bob Farrell
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
# in the Software without restriction, including without limitation the rights
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
# copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included in
# all copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
# THE SOFTWARE.
import pdb
import bpython
class BPdb(pdb.Pdb):
""" PDB with BPython support. """
def __init__(self):
pdb.Pdb.__init__(self)
self.rcLines = []
self.prompt = ''(BPdb) ''
self.intro = ''Use "B" to enter bpython, Ctrl-d to exit it.''
def postloop(self):
# We only want to show the intro message once.
self.intro = None
pdb.Pdb.postloop(self)
### cmd.Cmd commands
def do_Bpython(self, arg):
bpython.embed(self.curframe.f_locals, [''-i''])
def help_Bpython(self):
print "B(python)"
print
print ("Invoke the bpython interpreter for this stack frame. To exit "
"bpython and return to a standard pdb press Ctrl-d")
### shortcuts
do_B = do_Bpython
help_B = help_Bpython
¡Tu pregunta me parece perfectamente válida!