New submission from huzhaojie <[email protected]>:
In Pdb, when successfully clear breakpoints, the Pdb should output a
message:"Deleted XXX", but when breakpoints are cleared by filename:lineno, the
message can't be output.
I think it's related to the following code.
```python
pdb.py:
def do_clear(self, arg):
...
if ':' in arg:
# Make sure it works for "clear C:\foo\bar.py:12"
i = arg.rfind(':')
filename = arg[:i]
arg = arg[i+1:]
try:
lineno = int(arg)
except ValueError:
err = "Invalid line number (%s)" % arg
else:
bplist = self.get_breaks(filename, lineno)
err = self.clear_break(filename, lineno)
if err:
self.error(err)
else:
for bp in bplist:
self.message('Deleted %s' % bp)
return
```
self.get_breaks is called to get the breakpoints to be deleted, the result is
in bplist. self.clear_break is called to delete the breakpoints in bplist. Each
element in bplist is a reference to a Breakpoint object, so when all Breakpoint
objects are removed, the bplist will become an empty list when self.clear_break
is called, so pdb can't output the prompt message.
It can be simply fixed by following code:
```python
bplist = self.get_breaks(filename, lineno)[:]
```
----------
title: pdb can't output the prompt message when successfully clear a breakpoint
by "filename:lineno" -> pdb can't output the prompt message when successfully
clear breakpoints by "filename:lineno"
_______________________________________
Python tracker <[email protected]>
<https://bugs.python.org/issue43318>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe:
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com