ipython / ipython/ipykernel

How do I use pdb on the host rather than the webclient?

Abierto
#587 0 comentarios 0 reacciones 0 asignados Ver en GitHub
Lenguaje dominante
Python
Estrellas
734
Forks
412
Merge medio
1 d 5 h
PR fusionados (30 d)
8

Descripción

I've asked this question on stackoverflow, but I don't think I'm going to get an answer there.

I want to log to the terminal Jupyter is running in rather than the notebook. I find running IPDB in a webpage really tedious. I'm developing for Jupyter, not on it.

IPython/Jupyter patches stderr, stdin and stdout with a special file. But I can get the originals with `sys.__stdin__`.

I've tried creating a custom pdb class, but a few broken things happen.

import sys
import pdb

mypdb = pdb.Pdb(
stdin=sys.__stdin__,
stdout=sys.__stdout__,
readrc=False
)

mypdb.set_trace()

It immediately terminates execution, but it does print to the correct console.

[![Console][1]][1]

[![Jupyter][2]][2]

[1]: https://i.stack.imgur.com/CSBbi.png
[2]: https://i.stack.imgur.com/iyH0Y.png

If I run the following in Jupyter, the behavior changes to be even more strange.

import sys
import pdb

sys.stdin = sys.__stdin__
sys.stderr = sys.__stderr__
sys.stdout = sys.__stdout__


pdb.set_trace()

Instead of crashing immediately it now debugs in Jupyter _but also_ prints the `ipdb` output in the console non-interactively.

Guía de contribución

Abrir la guía de contribución

Evaluación

Este issue todavía no se ha evaluado.

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.