How do I use pdb on the host rather than the webclient?
- Lingua principale
- Python
- Stelle
- 734
- Fork
- 412
- Merge medio
- 1g 5h
- PR unite (30g)
- 8
Descrizione
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.
Guida per i contributori
Apri la guida per i contributori
Valutazione
Questa issue non è ancora stata valutata.