New submission from huzhaojie <hu...@foxmail.com>:

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 <rep...@bugs.python.org>
<https://bugs.python.org/issue43318>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to