ipython / ipython/ipykernel

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

Ouverte
#587 0 commentaires 0 réactions 0 personnes assignées Voir sur GitHub
Langage dominant
Python
Étoiles
734
Forks
412
Merge moyen
1 j 5 h
PR mergées (30 j)
8

Description

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.

Guide de contribution

Ouvrir le guide de contribution

Évaluation

Cette issue n'a pas encore été évaluée.

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.