spyder-ide / spyder

Official repository for Spyder - The Scientific Python Development Environment
https://www.spyder-ide.org
MIT License
8.21k stars 1.59k forks source link

Deselecting "Stop debugging on first line of files without breakpoints" ignores breakpoints in other files #22035

Open mrclary opened 4 months ago

mrclary commented 4 months ago

Problem Description

Deselecting "Stop debugging on first line of files without breakpoints" ignores breakpoints in other files.

What steps reproduce the problem?

  1. Deselect "Stop debugging on first line of files without breakpoints".
  2. No breakpoints in first file, but add breakpoint in dependent file.
  3. Run debugger on first file.

What is the expected output? What do you see instead?

I expect the debugger to stop at the breakpoint in the dependent file, but the debugger does not stop.

If "Stop debugging on first line of files without breakpoints" is selected, then debugger stops on first line of first file. Continuing execution, the debugger stops at the breakpoint in the dependent file.

Versions

Dependencies

# Mandatory:
atomicwrites >=1.2.0              :  1.4.1 (OK)
chardet >=2.0.0                   :  5.2.0 (OK)
cloudpickle >=0.5.0               :  3.0.0 (OK)
cookiecutter >=1.6.0              :  2.5.0 (OK)
diff_match_patch >=20181111       :  20230430 (OK)
intervaltree >=3.0.2              :  3.1.0 (OK)
IPython >=8.13.0,<9.0.0,!=8.17.1  :  8.21.0 (OK)
jedi >=0.17.2,<0.20.0             :  0.19.1 (OK)
jellyfish >=0.7                   :  1.0.3 (OK)
jsonschema >=3.2.0                :  4.21.1 (OK)
keyring >=17.0.0                  :  24.3.0 (OK)
nbconvert >=4.0                   :  7.16.0 (OK)
numpydoc >=0.6.0                  :  1.6.0 (OK)
parso >=0.7.0,<0.9.0              :  0.8.3 (OK)
pexpect >=4.4.0                   :  4.9.0 (OK)
pickleshare >=0.4                 :  0.7.5 (OK)
psutil >=5.3                      :  5.9.8 (OK)
pygments >=2.0                    :  2.17.2 (OK)
pylint >=3.1,<4                   :  3.1.0 (OK)
pylint_venv >=3.0.2               :  3.0.3 (OK)
pyls_spyder >=0.4.0               :  0.4.0 (OK)
pylsp >=1.11.0,<1.12.0            :  1.11.0 (OK)
pylsp_black >=2.0.0,<3.0.0        :  2.0.0 (OK)
pyuca >=1.2                       :  1.2 (OK)
qdarkstyle >=3.2.0,<3.3.0         :  3.2.3 (OK)
qstylizer >=0.2.2                 :  0.2.2 (OK)
qtawesome >=1.3.1,<1.4.0          :  1.3.1 (OK)
qtconsole >=5.5.1,<5.6.0          :  5.5.1 (OK)
qtpy >=2.4.0                      :  2.4.1 (OK)
rtree >=0.9.7                     :  1.2.0 (OK)
setuptools >=49.6.0               :  69.0.3 (OK)
sphinx >=0.6.6                    :  7.2.6 (OK)
spyder_kernels >=3.0.0b5,<3.0.0b6 :  3.0.0b5 (OK)
superqt >=0.6.1,<1.0.0            :  0.6.1 (OK)
textdistance >=4.2.0              :  4.5.0 (OK)
three_merge >=0.1.1               :  0.1.1 (OK)
watchdog >=0.10.3                 :  4.0.0 (OK)
zmq >=24.0.0                      :  25.1.2 (OK)

# Optional:
cython >=0.21                     :  3.0.8 (OK)
matplotlib >=3.0.0                :  3.8.2 (OK)
numpy >=1.7                       :  1.26.4 (OK)
pandas >=1.1.1                    :  2.2.0 (OK)
scipy >=0.17.0                    :  1.12.0 (OK)
sympy >=0.7.3                     :  1.12 (OK)
ccordoba12 commented 4 months ago

The current mechanism is only able to search for breakpoints in the current file (i.e. the one where you start the debugging session), not any other file.

I really don't know how easy it could be to implement this, but in the meantime you can use code breakpoints to achieve what you want (i.e. introducing the breakpoint() statement where you want your code to stop).

mrclary commented 4 months ago

The current mechanism is only able to search for breakpoints in the current file (i.e. the one where you start the debugging session), not any other file.

That seems like a strange limitation since the plugin lists all the breakpoints in all the files...

I really don't know how easy it could be to implement this, but in the meantime you can use code breakpoints to achieve what you want (i.e. introducing the breakpoint() statement where you want your code to stop).

Perhaps an additional solution may be to add !continue to "Run code while debugging"?

ccordoba12 commented 4 months ago

That seems like a strange limitation since the plugin lists all the breakpoints in all the files...

Agreed.

Perhaps an additional solution may be to add !continue to "Run code while debugging"?

Yep, combined with doing that if we detect there's any breakpoint set in Spyder.

So, I think at the time I added this functionality we didn't have the comms architecture in place, so it was only possible to detect if a breakpoint is set in the current file.

Would you like to take a look at this one?