ipython / ipython/ipykernel

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

Aberta
#587 0 comentários 0 reações 0 responsáveis Ver no GitHub
Linguagem predominante
Python
Estrelas
734
Forks
412
Merge médio
1d 5h
PRs com merge (30d)
8

Descrição

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.

Guia de contribuição

Abrir o guia de contribuição

Avaliação

Esta issue ainda não foi avaliada.

Receba novas issues na sua caixa de entrada

Um resumo curto de issues do GitHub para quem está começando.