Commit graph

747 commits

Author SHA1 Message Date
Jordan Borean
1aff9aa541
Expose CLI Options through public API (#1928)
* Expose CLI Options through public API

Expose a public API that can retrieve the processed CLI options for the
current process launched through the debugpy CLI. This enables code to
be able to retrieve options like the port and adapter access token to be
used for launching their own child process' that can be debugged.

* Fix test by sending dict not dataclass object
2025-07-15 15:56:03 -07:00
Jordan Borean
ea1dd9a838
Fix debugger stepping actions in forked process (#1921)
* Fix debugger stepping actions in forked process

Fix the debugger stepping state when debugging a process that has been
forked from the main process. The new sys.monitoring mechanism didn't
fully clear the thread local storage after a fork leading to a state
where the forked child process tracked the wrong thread information and
was never updated on the latest continue action.

* Add stepping test for forked process

* Add line ending back in for cleaner diff

* More formatting reversions
2025-07-08 10:47:47 -07:00
Jordan Borean
b387710b7f
Add parent-session-pid argument (#1920)
* Add parent-session-pid argument

Add the ability to specify the parent process id when connecting a new
DAP server to the client. This value is used instead of the actual
process' parent id so that it can be associated with a specific debug
session even if it hasn't been spawned directly by that parent process.

* Add tests for new option
2025-07-07 09:52:53 -07:00
rabbit
34d5de99a0
IPv6 support (#1896)
* Add initial support for IPv6

* address comments (part 1)

* quick clean up of missed fix suggestion

* Fix misassigned default serving server address in adapter client

* add wrapper method to get host and port from`getsockname`
2025-05-22 13:04:11 -07:00
Rich Chiodo
e01e6dd8a9
Get rid of silly raise/except clause (#1865) 2025-03-07 16:55:50 -08:00
Rich Chiodo
24001704d8
Try making the test_cli tests more robust on Python 3.13 (#1864) 2025-03-07 15:41:52 -08:00
Rich Chiodo
02723de140
Fix multithreading stepping in 3.12 and later (#1798)
* Fix multithreaded stepping to not have 'return' events when a thread is already suspended

* Update after removing blank line

* Remove unnecessary change for start method
2025-01-07 11:25:54 -08:00
Luke Riddle
5014f2538a
Properly update pydevd._settrace.called (#1751)
* Properly update pydevd._settrace.called

* Change _settrace.called to _listen.called

* Remove unnecessary underscore from listen

* Fix lint issues

* Update multiple listen test
2024-12-06 14:48:58 -08:00
Rich Chiodo
43f41029ea
Make sure attach binaries are built before running tox (#1753)
* Make sure attach binaries are built before running tox

* Fix errors on 3.13
2024-12-03 15:27:42 -08:00
Rich Chiodo
73be8fb5df
Takes some changes from pydevd to fix line numbers being None (#1734)
* Add missing subrepo tools

* Update parent

* git subrepo commit (merge) src/debugpy/_vendored/pydevd

subrepo:
  subdir:   "src/debugpy/_vendored/pydevd"
  merged:   "c81fc701"
upstream:
  origin:   "https://github.com/fabioz/PyDev.Debugger.git"
  branch:   "main"
  commit:   "d0f81de4"
git-subrepo:
  version:  "0.4.9"
  origin:   "???"
  commit:   "???"

* Update sys_monitoring c file

* Try avoiding test errors on shutdown

* Try fixing case where closing early

* Run PRs everywhere
2024-11-14 16:22:19 -08:00
Rich Chiodo
8ab4ee89e9
Try to get more logging from 3.13 failures (#1711)
* Add more logging for 313 failure

* Auto retry failures

* Add retry for socket.write

* Put watchdog timeout back and drop errors

* Fix linter

* Add message on error so at least it's logged

* Try a different combination

* Fix linter

* Go back to longer watchdog

* Try a different tactic

* Don't log failure and wait a bit in the watchdog

* Go back to the NoMoreMessages

* Just disable watchdog in 3.13 for now

* Change watchdog timeout

* Try different algorithm for ports in use

* Add retries option

* Fix usages of get_test_server_port

* Retries don't seem to work at global level with xdist, use retries on individual tests
2024-10-24 11:08:42 -07:00
Rich Chiodo
4d86a42380
Updates from pydevd (#1706)
* Changes from pushing to pydevd

* Update some time outs to get flakey tests to pass

* Fix string failure

* String case backwards. Fixup test in pydevd

* Using callstack for exception check not sufficient

* Too restrictive on pydevd matching

* Try somethign better than just checking 'pydev'

* Retry a flakey test

* Disable flakey tests

* Another flakey test

* Increase timeout for attach

* Try upping timeout

* Up watchdog timeout

* Up some more timeouts

* Try delaying shutdown of test apps

* Don't output extra things that tests don't expect

* Fix output differences in 3.9? Not sure what that's about

* Fixup line differences in 3.9 with extra sleep

* Fix linter errors

* Fix breakpoint bugs
2024-10-21 10:17:39 -07:00
Rich Chiodo
f7d5df027c
Get Python 3.13 to work (#1692)
* Get debug launch working

* Turn Cython support back on

* Fix test failures

* Fix gevent test to be skipped

* Missed a version change in pipeline

* Fix comment

* Review feedback
2024-10-10 09:03:34 -07:00
Rich Chiodo
25955a05d8
Get debug attach to work for 3.12 (#1683)
* Get debug attach to work for 3.12

* Skip flakey test and update binaries

* Fix the skip if to work correctly
2024-09-24 09:55:36 -07:00
Rich Chiodo
ae6812bdac
Pull in pydevd sys.monitoring support (#1680)
This is pulling in @fabioz's latest changes for sys.monitoring and then fixing up any issues found with the debugpy tests.

A lot of the changes were made by Fabio since the latest pull from pydevd, so I also created this PR to compare what changes I made to Fabio's baseline:
rchiodo/PyDev.Debugger#1

Meaning you really only need to look at that other PR to see what changes I made. The rest of the changes here are from Fabio or ruff doing reformating.

After this goes through, we should have sys.monitoring support in debugpy. We can decide later if we want to implement our own support as @int19h started.

Fixes #1496
2024-09-23 11:22:54 -07:00
Adam Yoblick
bf4ce2b832 Fix bug in parser and fix unit test 2024-07-24 00:02:17 -05:00
Adam Yoblick
c5259c7e3f Raise error if target is whitespace, fix test 2024-07-23 17:13:23 -05:00
Adam Yoblick
05709cfa10 remove logging no longer needed and fix a test 2024-07-23 16:29:01 -05:00
Adam Yoblick
da6a6482f1 fix broken yield 2024-07-22 18:15:29 -05:00
Adam Yoblick
382bc69a2b save work 2024-07-22 17:54:01 -05:00
Adam Yoblick
e0f2a8be98 check in to save work 2024-07-17 18:23:37 -05:00
Adam Yoblick
5b9bfaf3a8 add tests for reading switches from the environment 2024-07-17 14:45:41 -05:00
Adam Yoblick
a0a6cfbf1f Add tests for environment switches 2024-07-16 18:36:13 -05:00
Adam Yoblick
f31df56792 Make sure target is set after parsing both command line and environment. Add some tests. 2024-07-16 14:40:48 -05:00
Adam Yoblick
fb14d133d3 Make some existing tests more explicit with their asserts 2024-07-15 18:19:26 -05:00
Adam Yoblick
4ba9da6087 add env var parsing to cli. Current tests pass but I need to add new ones 2024-07-15 16:34:44 -05:00
Adam Yoblick
e58f228e92 Add retry for flaky tests, and remove 3.8 from tests 2024-07-10 17:38:20 -05:00
Adam Yoblick
df254f6aab fix broken numpy assert for 3.8 2024-07-09 16:10:42 -05:00
Adam Yoblick
96e9f1e909 Fix numpy tests 2024-07-08 16:56:47 -05:00
Pavel Minaev
b9b09e662f Fix #1408: Can no longer expand Numpy arrays to view elements
Fix regression when loading pydevd plugins for numpy, pandas, and django.

Add smoke test for numpy arrays.
2023-12-15 00:14:23 -08:00
Pavel Minaev
ef9a67fe15 Fix #1337: Get port info from debugpy
Send "debugpySockets" event with information about opened sockets when clients connect and whenever ports get opened or closed.
2023-10-06 09:55:52 -07:00
Adam Yoblick
9cc65eb123 disable this linter error 2023-09-19 15:29:18 -05:00
Pavel Minaev
6340818a0e Enumerate installed packages & versions in the log as part of environment info. 2023-09-05 13:20:31 -07:00
Pavel Minaev
9997094101 Don't force-upgrade setuptools for test runs to avoid pkg_resources deprecation warning in gevent. 2023-09-05 13:20:31 -07:00
Pavel Minaev
88bf2c7827 Fix -Xfrozen_modules use in tests. 2023-08-28 13:14:39 -07:00
Pavel Minaev
83baa6d302 Fix -Xfrozen_modules warnings in test runs on Python 3.11 and 3.12 2023-08-17 11:00:07 -07:00
Pavel Minaev
12117683e7 Unpin greenlet in tests/requirements.txt 2023-08-16 14:58:54 -07:00
Pavel Minaev
d642538d7b Don't assume column number to be 1, since this is no longer correct in Python 3.11. 2023-08-14 14:06:06 -07:00
Pavel Minaev
35504f83ed Work around #1230
Look for more specific text in the output to avoid false positives.
2023-03-07 12:16:58 -08:00
Pavel Minaev
e9dc3e8844 Fix #1074: Use "startDebugging" request for subprocesses
Use the request if client advertises the "supportsStartDebuggingRequest" capability.
2023-02-07 13:04:58 -08:00
Pavel Minaev
9fd3e72235 Disable PYDEVD_USE_FRAME_EVAL by default. 2023-01-19 13:14:35 -08:00
Fabio Zadrozny
c419d5a7fd Don't stop on logpoints with conditions. Fixes #1146 2022-12-17 07:46:44 -03:00
Pavel Minaev
4067700ed8 Pin greenlet==1.1.3 in test dependencies due to #1126 2022-11-16 15:32:19 -08:00
Fabio Zadrozny
1d038201b3 Provide feedback/information in the debug console if attach to PID is slow. Fixes #1003 2022-10-17 07:05:09 -03:00
Fabio Zadrozny
349ff7337b Show chained exception frames in stack. Fixes #1042 2022-09-26 15:21:40 -03:00
Fabio Zadrozny
61321253e7 Use pydevd.log_to in debugpy to enable pydevd logging given the usage of debugpy.log_to. Fixes #1030 2022-09-02 08:45:20 -03:00
Pavel Minaev
4f6638b0a6 Fix #1001: Enable controlling shell expansion via "argsCanBeInterpretedByShell"
Fix #357: "argsExpansion" does not do what it says in VSCode

Treat non-array "args" in debug config as a request to prevent shell argument escaping and allow shell expansion.

Remove "argsExpansion".
2022-08-04 13:49:32 -07:00
Pavel Minaev
5da7721d4d Fix #975: Properties parameter to the configure API has become required in 1.6.1 2022-07-07 14:08:20 -07:00
Pavel Minaev
0a9b01b008 Fix #865: Debugging through poetry drops subprocess
Handle "exited" { "pydevdReason": "processReplaced" } appropriately.

Add test for os.exec() in-place process replacement.
2022-06-09 10:44:10 -07:00
Pavel Minaev
b46500c5dc Mark test secrets as placeholders for CredScan compliance. 2022-05-25 14:11:38 -07:00