[Python-Dev] PEP 553: Built-in debug() (original) (raw)

Terry Reedy tjreedy at udel.edu
Thu Sep 7 16:52:10 EDT 2017


On 9/7/2017 12:50 PM, Barry Warsaw wrote:

On Sep 6, 2017, at 23:10, Terry Reedy <tjreedy at udel.edu> wrote:

Environmental variables are set to strings, not objects. It is not clear how you intend to handle the conversion. The environment variable names a module import path. Without quibbling about the details of the syntax (because honestly, I’m not convinced it’s a useful feature), it would work roughly like: * The default value is equivalent to PYTHONBREAKPOINTHOOK=pdb.settrace * breakpoint() splits the value on the rightmost dot * modules on the LHS are imported, then the RHS is getattr’d out of that * That’s the callable breakpoint() calls

Environmental variables tend to be a pain on Windows and nigh unusable by beginners. Leaving that aside, I see these problems with trying to use one for IDLE's current debugger.

pdb is universal, in the sense of working with any python run with actual or simulated stdin and stdout. IDLE's idb is specific to working with IDLE. So one could not set an EV to 'idlelib.idb.start' and leave it while switching between IDLE and console.

pdb runs in one process, with communication between debugger and text ui handled by call and return. It can be started on the fly. IDLE runs code in a separate process. The debugger has to run in the user process. IDLE currently runs the GUI in the IDLE process. So a complicated communication process has to be set up with rpc proxies and adaptors, and this is best done before code runs. The on-the-fly function should not need an import and it might be better to not have one.

pdb.set_trace is a public and stable interface. IDLE's is private and likely to be initially unstable. I can imagine that the function that I would want to bind to sys.breakpoint would be a bound method

Thinking about the above prompted me to rethink IDLE's debugger and consider rewriting it as an IDLE-independent gui debugger. I'll will say more in response to Guido and you.

-- Terry Jan Reedy



More information about the Python-Dev mailing list