debugpy 1.8.3__zip → 1.8.6__zip
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {debugpy-1.8.3/src/debugpy.egg-info → debugpy-1.8.6}/PKG-INFO +1 -1
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_calltip_util.py +19 -21
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_completer.py +30 -30
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_execfile.py +3 -1
- debugpy-1.8.6/src/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_filesystem_encoding.py +43 -0
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_getopt.py +35 -32
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_imports_tipper.py +83 -84
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_jy_imports_tipper.py +92 -99
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_log.py +2 -3
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_saved_modules.py +51 -27
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_sys_patch.py +11 -7
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_tipper_common.py +6 -5
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydev_bundle/fsnotify/__init__.py +34 -38
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_console_utils.py +71 -69
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_import_hook.py +1 -3
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_imports.py +0 -1
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_ipython_console.py +14 -16
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_ipython_console_011.py +81 -93
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_is_thread_alive.py +3 -3
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_localhost.py +9 -8
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_log.py +33 -25
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_monkey.py +183 -170
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_monkey_qt.py +33 -29
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_override.py +6 -4
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_umd.py +19 -18
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_versioncheck.py +3 -3
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydev_runfiles/pydev_runfiles.py +165 -138
- debugpy-1.8.6/src/debugpy/_vendored/pydevd/_pydev_runfiles/pydev_runfiles_coverage.py +77 -0
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydev_runfiles/pydev_runfiles_nose.py +35 -36
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydev_runfiles/pydev_runfiles_parallel.py +22 -23
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydev_runfiles/pydev_runfiles_parallel_client.py +37 -57
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydev_runfiles/pydev_runfiles_pytest2.py +54 -52
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydev_runfiles/pydev_runfiles_unittest.py +28 -37
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydev_runfiles/pydev_runfiles_xml_rpc.py +56 -53
- debugpy-1.8.6/src/debugpy/_vendored/pydevd/_pydevd_bundle/_debug_adapter/__main__pydevd_gen_debug_adapter_protocol.py +604 -0
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/_debug_adapter/debugProtocol.json +551 -445
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/_debug_adapter/pydevd_base_schema.py +25 -29
- debugpy-1.8.6/src/debugpy/_vendored/pydevd/_pydevd_bundle/_debug_adapter/pydevd_schema.py +17458 -0
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/_debug_adapter/pydevd_schema_log.py +11 -12
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevconsole_code.py +18 -19
- debugpy-1.8.6/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_additional_thread_info.py +41 -0
- debugpy-1.8.6/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_additional_thread_info_regular.py +327 -0
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_api.py +263 -214
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_breakpoints.py +7 -10
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_bytecode_utils.py +187 -92
- debugpy-1.8.6/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_bytecode_utils_py311.py +105 -0
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_code_to_source.py +46 -51
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_collect_bytecode_info.py +239 -176
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_comm.py +370 -297
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_comm_constants.py +78 -86
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_command_line_handling.py +55 -59
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_concurrency_analyser/pydevd_concurrency_logger.py +194 -58
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_concurrency_analyser/pydevd_thread_wrappers.py +2 -3
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_console.py +18 -23
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_constants.py +157 -127
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_custom_frames.py +10 -12
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_cython.c +35217 -23106
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_cython.pxd +15 -0
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_cython.pyx +802 -511
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_cython_wrapper.py +18 -7
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_daemon_thread.py +32 -24
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_defaults.py +11 -13
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_dont_trace.py +16 -16
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_dont_trace_files.py +27 -2
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_exec2.py +1 -1
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_extension_api.py +4 -5
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_extension_utils.py +8 -10
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_filtering.py +50 -45
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_frame.py +462 -407
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_frame_utils.py +63 -61
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_gevent_integration.py +14 -16
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_import_class.py +27 -25
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_io.py +40 -42
- debugpy-1.8.6/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_json_debug_options.py +200 -0
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_net_command.py +20 -19
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_net_command_factory_json.py +199 -108
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_net_command_factory_xml.py +121 -73
- debugpy-1.8.6/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_plugin_utils.py +208 -0
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_process_net_command.py +206 -159
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_process_net_command_json.py +346 -334
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_referrers.py +75 -80
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_reload.py +35 -35
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_resolver.py +116 -124
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_runpy.py +44 -58
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_safe_repr.py +51 -55
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_save_locals.py +4 -2
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_signature.py +24 -24
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_source_mapping.py +19 -20
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_stackless.py +45 -49
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_suspended_frames.py +61 -58
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_thread_lifecycle.py +23 -13
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_timeout.py +29 -31
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_trace_dispatch.py +41 -11
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_trace_dispatch_regular.py +117 -55
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_traceproperty.py +11 -14
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_utils.py +90 -89
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_vars.py +106 -97
- debugpy-1.8.6/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_vm_type.py +40 -0
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_xml.py +56 -46
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/pydevd_frame_eval_cython_wrapper.py +5 -5
- debugpy-1.8.6/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/pydevd_frame_eval_main.py +71 -0
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/pydevd_frame_evaluator.c +11165 -5326
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/pydevd_frame_tracing.py +5 -6
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/pydevd_modify_bytecode.py +53 -56
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/__init__.py +1 -0
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/bytecode.py +4 -6
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/cfg.py +6 -26
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/concrete.py +7 -21
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/flags.py +5 -24
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/instr.py +10 -34
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/peephole_opt.py +1 -4
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/__init__.py +2 -6
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/test_bytecode.py +3 -5
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/test_cfg.py +11 -31
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/test_code.py +2 -2
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/test_concrete.py +14 -41
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/test_flags.py +2 -4
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/test_instr.py +7 -18
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/test_misc.py +6 -18
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/test_peephole_opt.py +7 -18
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/util_annotation.py +1 -3
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/pydevd_fix_code.py +14 -19
- debugpy-1.8.6/src/debugpy/_vendored/pydevd/_pydevd_sys_monitoring/_pydevd_sys_monitoring.py +1927 -0
- debugpy-1.8.6/src/debugpy/_vendored/pydevd/_pydevd_sys_monitoring/_pydevd_sys_monitoring_cython.c +43058 -0
- debugpy-1.8.6/src/debugpy/_vendored/pydevd/_pydevd_sys_monitoring/_pydevd_sys_monitoring_cython.pxd +46 -0
- debugpy-1.8.6/src/debugpy/_vendored/pydevd/_pydevd_sys_monitoring/_pydevd_sys_monitoring_cython.pyx +1934 -0
- debugpy-1.8.6/src/debugpy/_vendored/pydevd/_pydevd_sys_monitoring/pydevd_sys_monitoring.py +16 -0
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydev_app_engine_debug_startup.py +12 -11
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydev_coverage.py +30 -32
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydev_ipython/inputhook.py +58 -54
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydev_ipython/inputhookglut.py +20 -24
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydev_ipython/inputhookgtk.py +8 -7
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydev_ipython/inputhookgtk3.py +8 -6
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydev_ipython/inputhookpyglet.py +11 -8
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydev_ipython/inputhookqt4.py +21 -18
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydev_ipython/inputhookqt5.py +17 -15
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydev_ipython/inputhookqt6.py +17 -15
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydev_ipython/inputhooktk.py +6 -4
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydev_ipython/inputhookwx.py +14 -10
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydev_ipython/matplotlibtools.py +30 -26
- debugpy-1.8.6/src/debugpy/_vendored/pydevd/pydev_ipython/qt.py +24 -0
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydev_ipython/qt_for_kernel.py +37 -34
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydev_ipython/qt_loaders.py +86 -73
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydev_ipython/version.py +7 -7
- debugpy-1.8.6/src/debugpy/_vendored/pydevd/pydev_pysrc.py +1 -0
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydev_run_in_console.py +23 -24
- debugpy-1.8.6/src/debugpy/_vendored/pydevd/pydev_sitecustomize/sitecustomize.py +267 -0
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevconsole.py +55 -47
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd.py +732 -508
- debugpy-1.8.6/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/_always_live_program.py +40 -0
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/_check.py +1 -0
- debugpy-1.8.6/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/_test_attach_to_process.py +11 -0
- debugpy-1.8.6/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/_test_attach_to_process_linux.py +75 -0
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/add_code_to_python_process.py +130 -125
- debugpy-1.8.6/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/attach_amd64.dll +0 -0
- debugpy-1.8.6/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/attach_amd64.pdb +0 -0
- debugpy-1.8.6/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/attach_pydevd.py +89 -0
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/attach_script.py +41 -32
- debugpy-1.8.6/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/attach_x86.dll +0 -0
- debugpy-1.8.6/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/attach_x86.pdb +0 -0
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/common/py_utils.hpp +1 -0
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/common/py_version.hpp +9 -1
- debugpy-1.8.6/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/inject_dll_amd64.exe +0 -0
- debugpy-1.8.6/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/inject_dll_amd64.pdb +0 -0
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/inject_dll_x86.exe +0 -0
- debugpy-1.8.6/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/inject_dll_x86.pdb +0 -0
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/linux_and_mac/lldb_prepare.py +10 -9
- debugpy-1.8.6/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/run_code_on_dllmain_amd64.dll +0 -0
- debugpy-1.8.6/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/run_code_on_dllmain_amd64.pdb +0 -0
- debugpy-1.8.6/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/run_code_on_dllmain_x86.dll +0 -0
- debugpy-1.8.6/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/run_code_on_dllmain_x86.pdb +0 -0
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/__init__.py +103 -119
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/breakpoint.py +457 -516
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/compat.py +33 -15
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/crash.py +336 -281
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/debug.py +101 -131
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/disasm.py +148 -153
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/event.py +310 -302
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/interactive.py +235 -208
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/module.py +185 -218
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/process.py +428 -564
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/registry.py +54 -53
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/search.py +69 -73
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/sql.py +158 -170
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/system.py +143 -213
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/textio.py +302 -333
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/thread.py +220 -239
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/util.py +198 -177
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/__init__.py +11 -11
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/advapi32.py +1191 -713
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/context_amd64.py +248 -194
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/context_i386.py +132 -120
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/dbghelp.py +450 -346
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/defines.py +305 -286
- debugpy-1.8.6/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/gdi32.py +526 -0
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/kernel32.py +1479 -1097
- debugpy-1.8.6/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/ntdll.py +579 -0
- debugpy-1.8.6/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/peb_teb.py +3517 -0
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/psapi.py +54 -31
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/shell32.py +170 -149
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/shlwapi.py +190 -108
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/user32.py +542 -437
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/version.py +489 -442
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/wtsapi32.py +83 -65
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/window.py +70 -76
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/windows/attach.cpp +17 -9
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/windows/compile_windows.bat +1 -1
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_file_utils.py +141 -120
- {debugpy-1.8.3/src/debugpy/_vendored/pydevd/pydevd_plugins/extensions/types → debugpy-1.8.6/src/debugpy/_vendored/pydevd/pydevd_plugins}/__init__.py +1 -0
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_plugins/django_debug.py +175 -149
- {debugpy-1.8.3/src/debugpy/_vendored/pydevd/pydevd_plugins → debugpy-1.8.6/src/debugpy/_vendored/pydevd/pydevd_plugins/extensions}/__init__.py +1 -0
- {debugpy-1.8.3/src/debugpy/_vendored/pydevd/pydevd_plugins/extensions → debugpy-1.8.6/src/debugpy/_vendored/pydevd/pydevd_plugins/extensions/types}/__init__.py +1 -0
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_plugins/extensions/types/pydevd_helpers.py +5 -5
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_plugins/extensions/types/pydevd_plugin_numpy_types.py +28 -28
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_plugins/extensions/types/pydevd_plugin_pandas_types.py +22 -30
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_plugins/extensions/types/pydevd_plugins_django_form_str.py +3 -2
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_plugins/jinja2_debug.py +130 -108
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_plugins/pydevd_line_validation.py +27 -14
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_tracing.py +85 -66
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/setup_pydevd_cython.py +96 -59
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/_version.py +3 -3
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/common/messaging.py +2 -1
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/server/cli.py +32 -17
- {debugpy-1.8.3 → debugpy-1.8.6/src/debugpy.egg-info}/PKG-INFO +1 -1
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy.egg-info/SOURCES.txt +6 -9
- debugpy-1.8.3/src/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_filesystem_encoding.py +0 -41
- debugpy-1.8.3/src/debugpy/_vendored/pydevd/_pydev_runfiles/pydev_runfiles_coverage.py +0 -76
- debugpy-1.8.3/src/debugpy/_vendored/pydevd/_pydevd_bundle/_debug_adapter/__main__pydevd_gen_debug_adapter_protocol.py +0 -592
- debugpy-1.8.3/src/debugpy/_vendored/pydevd/_pydevd_bundle/_debug_adapter/pydevd_schema.py +0 -19514
- debugpy-1.8.3/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_additional_thread_info.py +0 -19
- debugpy-1.8.3/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_additional_thread_info_regular.py +0 -153
- debugpy-1.8.3/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_json_debug_options.py +0 -204
- debugpy-1.8.3/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_plugin_utils.py +0 -91
- debugpy-1.8.3/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_trace_api.py +0 -62
- debugpy-1.8.3/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_vm_type.py +0 -41
- debugpy-1.8.3/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/pydevd_frame_eval_main.py +0 -48
- debugpy-1.8.3/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode-0.13.0.dev0.dist-info/COPYING +0 -21
- debugpy-1.8.3/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode-0.13.0.dev0.dist-info/INSTALLER +0 -1
- debugpy-1.8.3/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode-0.13.0.dev0.dist-info/METADATA +0 -77
- debugpy-1.8.3/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode-0.13.0.dev0.dist-info/RECORD +0 -42
- debugpy-1.8.3/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode-0.13.0.dev0.dist-info/REQUESTED +0 -0
- debugpy-1.8.3/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode-0.13.0.dev0.dist-info/WHEEL +0 -5
- debugpy-1.8.3/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode-0.13.0.dev0.dist-info/direct_url.json +0 -1
- debugpy-1.8.3/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode-0.13.0.dev0.dist-info/top_level.txt +0 -1
- debugpy-1.8.3/src/debugpy/_vendored/pydevd/pydev_ipython/qt.py +0 -23
- debugpy-1.8.3/src/debugpy/_vendored/pydevd/pydev_pysrc.py +0 -1
- debugpy-1.8.3/src/debugpy/_vendored/pydevd/pydev_sitecustomize/sitecustomize.py +0 -237
- debugpy-1.8.3/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/_always_live_program.py +0 -32
- debugpy-1.8.3/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/_test_attach_to_process.py +0 -9
- debugpy-1.8.3/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/_test_attach_to_process_linux.py +0 -74
- debugpy-1.8.3/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/attach_amd64.dll +0 -0
- debugpy-1.8.3/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/attach_amd64.pdb +0 -0
- debugpy-1.8.3/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/attach_pydevd.py +0 -79
- debugpy-1.8.3/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/attach_x86.dll +0 -0
- debugpy-1.8.3/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/attach_x86.pdb +0 -0
- debugpy-1.8.3/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/inject_dll_amd64.exe +0 -0
- debugpy-1.8.3/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/inject_dll_amd64.pdb +0 -0
- debugpy-1.8.3/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/inject_dll_x86.pdb +0 -0
- debugpy-1.8.3/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/run_code_on_dllmain_amd64.dll +0 -0
- debugpy-1.8.3/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/run_code_on_dllmain_amd64.pdb +0 -0
- debugpy-1.8.3/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/run_code_on_dllmain_x86.dll +0 -0
- debugpy-1.8.3/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/run_code_on_dllmain_x86.pdb +0 -0
- debugpy-1.8.3/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/gdi32.py +0 -507
- debugpy-1.8.3/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/ntdll.py +0 -539
- debugpy-1.8.3/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/peb_teb.py +0 -3435
- {debugpy-1.8.3 → debugpy-1.8.6}/DESCRIPTION.md +0 -0
- {debugpy-1.8.3 → debugpy-1.8.6}/LICENSE +0 -0
- {debugpy-1.8.3 → debugpy-1.8.6}/MANIFEST.in +0 -0
- {debugpy-1.8.3 → debugpy-1.8.6}/README.md +0 -0
- {debugpy-1.8.3 → debugpy-1.8.6}/pyproject.toml +0 -0
- {debugpy-1.8.3 → debugpy-1.8.6}/setup.cfg +0 -0
- {debugpy-1.8.3 → debugpy-1.8.6}/setup.py +0 -0
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/ThirdPartyNotices.txt +0 -0
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/__init__.py +0 -0
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/__main__.py +0 -0
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/_vendored/__init__.py +0 -0
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/_vendored/_pydevd_packaging.py +0 -0
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/_vendored/_util.py +0 -0
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/_vendored/force_pydevd.py +0 -0
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydev_bundle/__init__.py +0 -0
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydev_runfiles/__init__.py +0 -0
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/__init__.py +0 -0
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/_debug_adapter/__init__.py +0 -0
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/_debug_adapter/debugProtocolCustom.json +0 -0
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_concurrency_analyser/__init__.py +0 -0
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/.gitignore +0 -0
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/__init__.py +0 -0
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/pydevd_frame_evaluator.pxd +0 -0
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/pydevd_frame_evaluator.pyx +0 -0
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/pydevd_frame_evaluator.template.pyx +0 -0
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/release_mem.h +0 -0
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/README.txt +0 -0
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/__init__.py +0 -0
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydev_ipython/README +0 -0
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydev_ipython/__init__.py +0 -0
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydev_sitecustomize/__not_in_default_pythonpath.txt +0 -0
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/README.txt +0 -0
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/common/py_custom_pyeval_settrace.hpp +0 -0
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/common/py_custom_pyeval_settrace_310.hpp +0 -0
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/common/py_custom_pyeval_settrace_311.hpp +0 -0
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/common/py_custom_pyeval_settrace_common.hpp +0 -0
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/common/py_settrace.hpp +0 -0
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/common/python.h +0 -0
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/common/ref_utils.hpp +0 -0
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/linux_and_mac/.gitignore +0 -0
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/linux_and_mac/attach.cpp +0 -0
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/linux_and_mac/compile_linux.sh +0 -0
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/linux_and_mac/compile_mac.sh +0 -0
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/linux_and_mac/compile_manylinux.cmd +0 -0
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/windows/attach.h +0 -0
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/windows/inject_dll.cpp +0 -0
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/windows/py_win_helpers.hpp +0 -0
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/windows/run_code_in_memory.hpp +0 -0
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/windows/run_code_on_dllmain.cpp +0 -0
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/windows/stdafx.cpp +0 -0
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/windows/stdafx.h +0 -0
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/windows/targetver.h +0 -0
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/_vendored/pydevd/pydevd_plugins/extensions/README.md +0 -0
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/adapter/__init__.py +0 -0
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/adapter/__main__.py +0 -0
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/adapter/clients.py +0 -0
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/adapter/components.py +0 -0
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/adapter/launchers.py +0 -0
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/adapter/servers.py +0 -0
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/adapter/sessions.py +0 -0
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/common/__init__.py +0 -0
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/common/json.py +0 -0
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/common/log.py +0 -0
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/common/singleton.py +0 -0
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/common/sockets.py +0 -0
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/common/stacks.py +0 -0
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/common/timestamp.py +0 -0
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/common/util.py +0 -0
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/launcher/__init__.py +0 -0
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/launcher/__main__.py +0 -0
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/launcher/debuggee.py +0 -0
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/launcher/handlers.py +0 -0
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/launcher/output.py +0 -0
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/launcher/winapi.py +0 -0
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/public_api.py +0 -0
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/server/__init__.py +0 -0
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/server/api.py +0 -0
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy/server/attach_pid_injected.py +0 -0
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy.egg-info/dependency_links.txt +0 -0
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy.egg-info/entry_points.txt +0 -0
- {debugpy-1.8.3 → debugpy-1.8.6}/src/debugpy.egg-info/top_level.txt +0 -0
- {debugpy-1.8.3 → debugpy-1.8.6}/versioneer.py +0 -0
|
@@ -52,27 +52,23 @@ Miscellaneous utility classes and functions.
|
|
|
52
52
|
__revision__ = "$Id$"
|
|
53
53
|
|
|
54
54
|
__all__ = [
|
|
55
|
-
|
|
56
55
|
# Filename and pathname manipulation
|
|
57
|
-
|
|
58
|
-
|
|
56
|
+
"PathOperations",
|
|
59
57
|
# Memory address operations
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
58
|
+
"MemoryAddresses",
|
|
59
|
+
"CustomAddressIterator",
|
|
60
|
+
"DataAddressIterator",
|
|
61
|
+
"ImageAddressIterator",
|
|
62
|
+
"MappedAddressIterator",
|
|
63
|
+
"ExecutableAddressIterator",
|
|
64
|
+
"ReadableAddressIterator",
|
|
65
|
+
"WriteableAddressIterator",
|
|
66
|
+
"ExecutableAndWriteableAddressIterator",
|
|
70
67
|
# Debug registers manipulation
|
|
71
|
-
|
|
72
|
-
|
|
68
|
+
"DebugRegister",
|
|
73
69
|
# Miscellaneous
|
|
74
|
-
|
|
75
|
-
|
|
70
|
+
"Regenerator",
|
|
71
|
+
]
|
|
76
72
|
|
|
77
73
|
import sys
|
|
78
74
|
import os
|
|
@@ -82,7 +78,8 @@ import optparse
|
|
|
82
78
|
from winappdbg import win32
|
|
83
79
|
from winappdbg import compat
|
|
84
80
|
|
|
85
|
-
|
|
81
|
+
# ==============================================================================
|
|
82
|
+
|
|
86
83
|
|
|
87
84
|
class classproperty(property):
|
|
88
85
|
"""
|
|
@@ -93,21 +90,27 @@ class classproperty(property):
|
|
|
93
90
|
|
|
94
91
|
Inspired on: U{http://stackoverflow.com/a/7864317/426293}
|
|
95
92
|
"""
|
|
93
|
+
|
|
96
94
|
def __init__(self, fget=None, fset=None, fdel=None, doc=""):
|
|
97
95
|
if fset is not None or fdel is not None:
|
|
98
96
|
raise NotImplementedError()
|
|
99
97
|
super(classproperty, self).__init__(fget=classmethod(fget), doc=doc)
|
|
98
|
+
|
|
100
99
|
def __get__(self, cls, owner):
|
|
101
100
|
return self.fget.__get__(None, owner)()
|
|
102
101
|
|
|
102
|
+
|
|
103
103
|
class BannerHelpFormatter(optparse.IndentedHelpFormatter):
|
|
104
104
|
"Just a small tweak to optparse to be able to print a banner."
|
|
105
|
+
|
|
105
106
|
def __init__(self, banner, *argv, **argd):
|
|
106
107
|
self.banner = banner
|
|
107
108
|
optparse.IndentedHelpFormatter.__init__(self, *argv, **argd)
|
|
109
|
+
|
|
108
110
|
def format_usage(self, usage):
|
|
109
111
|
msg = optparse.IndentedHelpFormatter.format_usage(self, usage)
|
|
110
|
-
return
|
|
112
|
+
return "%s\n%s" % (self.banner, msg)
|
|
113
|
+
|
|
111
114
|
|
|
112
115
|
# See Process.generate_memory_snapshot()
|
|
113
116
|
class Regenerator(object):
|
|
@@ -129,33 +132,35 @@ class Regenerator(object):
|
|
|
129
132
|
@param d_args: Variable arguments to pass to the generator function.
|
|
130
133
|
"""
|
|
131
134
|
self.__g_function = g_function
|
|
132
|
-
self.__v_args
|
|
133
|
-
self.__d_args
|
|
134
|
-
self.__g_object
|
|
135
|
+
self.__v_args = v_args
|
|
136
|
+
self.__d_args = d_args
|
|
137
|
+
self.__g_object = None
|
|
135
138
|
|
|
136
139
|
def __iter__(self):
|
|
137
|
-
|
|
140
|
+
"x.__iter__() <==> iter(x)"
|
|
138
141
|
return self
|
|
139
142
|
|
|
140
143
|
def next(self):
|
|
141
|
-
|
|
144
|
+
"x.next() -> the next value, or raise StopIteration"
|
|
142
145
|
if self.__g_object is None:
|
|
143
|
-
self.__g_object = self.__g_function(
|
|
146
|
+
self.__g_object = self.__g_function(*self.__v_args, **self.__d_args)
|
|
144
147
|
try:
|
|
145
148
|
return self.__g_object.next()
|
|
146
149
|
except StopIteration:
|
|
147
150
|
self.__g_object = None
|
|
148
151
|
raise
|
|
149
152
|
|
|
150
|
-
|
|
153
|
+
|
|
154
|
+
class StaticClass(object):
|
|
151
155
|
def __new__(cls, *argv, **argd):
|
|
152
156
|
"Don't try to instance this class, just use the static methods."
|
|
153
|
-
raise NotImplementedError(
|
|
154
|
-
|
|
157
|
+
raise NotImplementedError("Cannot instance static class %s" % cls.__name__)
|
|
158
|
+
|
|
159
|
+
|
|
160
|
+
# ==============================================================================
|
|
155
161
|
|
|
156
|
-
#==============================================================================
|
|
157
162
|
|
|
158
|
-
class PathOperations
|
|
163
|
+
class PathOperations(StaticClass):
|
|
159
164
|
"""
|
|
160
165
|
Static methods for filename and pathname manipulation.
|
|
161
166
|
"""
|
|
@@ -187,7 +192,7 @@ class PathOperations (StaticClass):
|
|
|
187
192
|
return not win32.PathIsRelative(path)
|
|
188
193
|
|
|
189
194
|
@staticmethod
|
|
190
|
-
def make_relative(path, current
|
|
195
|
+
def make_relative(path, current=None):
|
|
191
196
|
"""
|
|
192
197
|
@type path: str
|
|
193
198
|
@param path: Absolute path.
|
|
@@ -202,7 +207,7 @@ class PathOperations (StaticClass):
|
|
|
202
207
|
This happens when the path and the current path are not on the
|
|
203
208
|
same disk drive or network share.
|
|
204
209
|
"""
|
|
205
|
-
return win32.PathRelativePathTo(pszFrom
|
|
210
|
+
return win32.PathRelativePathTo(pszFrom=current, pszTo=path)
|
|
206
211
|
|
|
207
212
|
@staticmethod
|
|
208
213
|
def make_absolute(path):
|
|
@@ -226,7 +231,7 @@ class PathOperations (StaticClass):
|
|
|
226
231
|
Tuple containing the file and extension components of the filename.
|
|
227
232
|
"""
|
|
228
233
|
filepart = win32.PathRemoveExtension(pathname)
|
|
229
|
-
extpart
|
|
234
|
+
extpart = win32.PathFindExtension(pathname)
|
|
230
235
|
return (filepart, extpart)
|
|
231
236
|
|
|
232
237
|
@staticmethod
|
|
@@ -257,7 +262,7 @@ class PathOperations (StaticClass):
|
|
|
257
262
|
while path:
|
|
258
263
|
next = win32.PathFindNextComponent(path)
|
|
259
264
|
if next:
|
|
260
|
-
prev = path[
|
|
265
|
+
prev = path[: -len(next)]
|
|
261
266
|
components.append(prev)
|
|
262
267
|
path = next
|
|
263
268
|
return components
|
|
@@ -293,30 +298,28 @@ class PathOperations (StaticClass):
|
|
|
293
298
|
# XXX TODO
|
|
294
299
|
# There are probably some native paths that
|
|
295
300
|
# won't be converted by this naive approach.
|
|
296
|
-
if name.startswith(
|
|
297
|
-
if name.startswith(
|
|
301
|
+
if name.startswith("\\"):
|
|
302
|
+
if name.startswith("\\??\\"):
|
|
298
303
|
name = name[4:]
|
|
299
|
-
elif name.startswith(
|
|
300
|
-
system_root_path = os.environ[
|
|
301
|
-
if system_root_path.endswith(
|
|
304
|
+
elif name.startswith("\\SystemRoot\\"):
|
|
305
|
+
system_root_path = os.environ["SYSTEMROOT"]
|
|
306
|
+
if system_root_path.endswith("\\"):
|
|
302
307
|
system_root_path = system_root_path[:-1]
|
|
303
308
|
name = system_root_path + name[11:]
|
|
304
309
|
else:
|
|
305
|
-
for drive_number in compat.xrange(ord(
|
|
306
|
-
drive_letter =
|
|
310
|
+
for drive_number in compat.xrange(ord("A"), ord("Z") + 1):
|
|
311
|
+
drive_letter = "%c:" % drive_number
|
|
307
312
|
try:
|
|
308
313
|
device_native_path = win32.QueryDosDevice(drive_letter)
|
|
309
314
|
except WindowsError:
|
|
310
315
|
e = sys.exc_info()[1]
|
|
311
|
-
if e.winerror in (win32.ERROR_FILE_NOT_FOUND,
|
|
312
|
-
win32.ERROR_PATH_NOT_FOUND):
|
|
316
|
+
if e.winerror in (win32.ERROR_FILE_NOT_FOUND, win32.ERROR_PATH_NOT_FOUND):
|
|
313
317
|
continue
|
|
314
318
|
raise
|
|
315
|
-
if not device_native_path.endswith(
|
|
316
|
-
device_native_path +=
|
|
319
|
+
if not device_native_path.endswith("\\"):
|
|
320
|
+
device_native_path += "\\"
|
|
317
321
|
if name.startswith(device_native_path):
|
|
318
|
-
name = drive_letter +
|
|
319
|
-
name[ len(device_native_path) : ]
|
|
322
|
+
name = drive_letter + "\\" + name[len(device_native_path) :]
|
|
320
323
|
break
|
|
321
324
|
return name
|
|
322
325
|
|
|
@@ -336,9 +339,11 @@ class PathOperations (StaticClass):
|
|
|
336
339
|
"""
|
|
337
340
|
return win32.PathFindFileName(pathname)
|
|
338
341
|
|
|
339
|
-
#==============================================================================
|
|
340
342
|
|
|
341
|
-
|
|
343
|
+
# ==============================================================================
|
|
344
|
+
|
|
345
|
+
|
|
346
|
+
class MemoryAddresses(StaticClass):
|
|
342
347
|
"""
|
|
343
348
|
Class to manipulate memory addresses.
|
|
344
349
|
|
|
@@ -359,7 +364,7 @@ class MemoryAddresses (StaticClass):
|
|
|
359
364
|
pageSize = 0x1000
|
|
360
365
|
except NameError:
|
|
361
366
|
pageSize = 0x1000
|
|
362
|
-
cls.pageSize = pageSize
|
|
367
|
+
cls.pageSize = pageSize # now this function won't be called again
|
|
363
368
|
return pageSize
|
|
364
369
|
|
|
365
370
|
@classmethod
|
|
@@ -373,7 +378,7 @@ class MemoryAddresses (StaticClass):
|
|
|
373
378
|
@rtype: int
|
|
374
379
|
@return: Aligned memory address.
|
|
375
380
|
"""
|
|
376
|
-
return address - (
|
|
381
|
+
return address - (address % cls.pageSize)
|
|
377
382
|
|
|
378
383
|
@classmethod
|
|
379
384
|
def align_address_to_page_end(cls, address):
|
|
@@ -387,7 +392,7 @@ class MemoryAddresses (StaticClass):
|
|
|
387
392
|
@rtype: int
|
|
388
393
|
@return: Aligned memory address.
|
|
389
394
|
"""
|
|
390
|
-
return address + cls.pageSize - (
|
|
395
|
+
return address + cls.pageSize - (address % cls.pageSize)
|
|
391
396
|
|
|
392
397
|
@classmethod
|
|
393
398
|
def align_address_range(cls, begin, end):
|
|
@@ -431,7 +436,7 @@ class MemoryAddresses (StaticClass):
|
|
|
431
436
|
@return: Buffer size in number of pages.
|
|
432
437
|
"""
|
|
433
438
|
if size < 0:
|
|
434
|
-
size
|
|
439
|
+
size = -size
|
|
435
440
|
address = address - size
|
|
436
441
|
begin, end = cls.align_address_range(address, address + size)
|
|
437
442
|
# XXX FIXME
|
|
@@ -458,12 +463,11 @@ class MemoryAddresses (StaticClass):
|
|
|
458
463
|
@rtype: bool
|
|
459
464
|
@return: C{True} if the two ranges intersect, C{False} otherwise.
|
|
460
465
|
"""
|
|
461
|
-
return
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
466
|
+
return (old_begin <= begin < old_end) or (old_begin < end <= old_end) or (begin <= old_begin < end) or (begin < old_end <= end)
|
|
467
|
+
|
|
468
|
+
|
|
469
|
+
# ==============================================================================
|
|
465
470
|
|
|
466
|
-
#==============================================================================
|
|
467
471
|
|
|
468
472
|
def CustomAddressIterator(memory_map, condition):
|
|
469
473
|
"""
|
|
@@ -483,12 +487,13 @@ def CustomAddressIterator(memory_map, condition):
|
|
|
483
487
|
"""
|
|
484
488
|
for mbi in memory_map:
|
|
485
489
|
if condition(mbi):
|
|
486
|
-
address
|
|
490
|
+
address = mbi.BaseAddress
|
|
487
491
|
max_addr = address + mbi.RegionSize
|
|
488
492
|
while address < max_addr:
|
|
489
493
|
yield address
|
|
490
494
|
address = address + 1
|
|
491
495
|
|
|
496
|
+
|
|
492
497
|
def DataAddressIterator(memory_map):
|
|
493
498
|
"""
|
|
494
499
|
Generator function that iterates through a memory map, returning only those
|
|
@@ -501,8 +506,8 @@ def DataAddressIterator(memory_map):
|
|
|
501
506
|
@rtype: generator of L{win32.MemoryBasicInformation}
|
|
502
507
|
@return: Generator object to iterate memory blocks.
|
|
503
508
|
"""
|
|
504
|
-
return CustomAddressIterator(memory_map,
|
|
505
|
-
|
|
509
|
+
return CustomAddressIterator(memory_map, win32.MemoryBasicInformation.has_content)
|
|
510
|
+
|
|
506
511
|
|
|
507
512
|
def ImageAddressIterator(memory_map):
|
|
508
513
|
"""
|
|
@@ -516,8 +521,8 @@ def ImageAddressIterator(memory_map):
|
|
|
516
521
|
@rtype: generator of L{win32.MemoryBasicInformation}
|
|
517
522
|
@return: Generator object to iterate memory blocks.
|
|
518
523
|
"""
|
|
519
|
-
return CustomAddressIterator(memory_map,
|
|
520
|
-
|
|
524
|
+
return CustomAddressIterator(memory_map, win32.MemoryBasicInformation.is_image)
|
|
525
|
+
|
|
521
526
|
|
|
522
527
|
def MappedAddressIterator(memory_map):
|
|
523
528
|
"""
|
|
@@ -531,8 +536,8 @@ def MappedAddressIterator(memory_map):
|
|
|
531
536
|
@rtype: generator of L{win32.MemoryBasicInformation}
|
|
532
537
|
@return: Generator object to iterate memory blocks.
|
|
533
538
|
"""
|
|
534
|
-
return CustomAddressIterator(memory_map,
|
|
535
|
-
|
|
539
|
+
return CustomAddressIterator(memory_map, win32.MemoryBasicInformation.is_mapped)
|
|
540
|
+
|
|
536
541
|
|
|
537
542
|
def ReadableAddressIterator(memory_map):
|
|
538
543
|
"""
|
|
@@ -546,8 +551,8 @@ def ReadableAddressIterator(memory_map):
|
|
|
546
551
|
@rtype: generator of L{win32.MemoryBasicInformation}
|
|
547
552
|
@return: Generator object to iterate memory blocks.
|
|
548
553
|
"""
|
|
549
|
-
return CustomAddressIterator(memory_map,
|
|
550
|
-
|
|
554
|
+
return CustomAddressIterator(memory_map, win32.MemoryBasicInformation.is_readable)
|
|
555
|
+
|
|
551
556
|
|
|
552
557
|
def WriteableAddressIterator(memory_map):
|
|
553
558
|
"""
|
|
@@ -563,8 +568,8 @@ def WriteableAddressIterator(memory_map):
|
|
|
563
568
|
@rtype: generator of L{win32.MemoryBasicInformation}
|
|
564
569
|
@return: Generator object to iterate memory blocks.
|
|
565
570
|
"""
|
|
566
|
-
return CustomAddressIterator(memory_map,
|
|
567
|
-
|
|
571
|
+
return CustomAddressIterator(memory_map, win32.MemoryBasicInformation.is_writeable)
|
|
572
|
+
|
|
568
573
|
|
|
569
574
|
def ExecutableAddressIterator(memory_map):
|
|
570
575
|
"""
|
|
@@ -580,8 +585,8 @@ def ExecutableAddressIterator(memory_map):
|
|
|
580
585
|
@rtype: generator of L{win32.MemoryBasicInformation}
|
|
581
586
|
@return: Generator object to iterate memory blocks.
|
|
582
587
|
"""
|
|
583
|
-
return CustomAddressIterator(memory_map,
|
|
584
|
-
|
|
588
|
+
return CustomAddressIterator(memory_map, win32.MemoryBasicInformation.is_executable)
|
|
589
|
+
|
|
585
590
|
|
|
586
591
|
def ExecutableAndWriteableAddressIterator(memory_map):
|
|
587
592
|
"""
|
|
@@ -598,10 +603,10 @@ def ExecutableAndWriteableAddressIterator(memory_map):
|
|
|
598
603
|
@rtype: generator of L{win32.MemoryBasicInformation}
|
|
599
604
|
@return: Generator object to iterate memory blocks.
|
|
600
605
|
"""
|
|
601
|
-
return CustomAddressIterator(memory_map,
|
|
602
|
-
win32.MemoryBasicInformation.is_executable_and_writeable)
|
|
606
|
+
return CustomAddressIterator(memory_map, win32.MemoryBasicInformation.is_executable_and_writeable)
|
|
603
607
|
|
|
604
|
-
|
|
608
|
+
|
|
609
|
+
# ==============================================================================
|
|
605
610
|
try:
|
|
606
611
|
_registerMask = win32.SIZE_T(-1).value
|
|
607
612
|
except TypeError:
|
|
@@ -612,7 +617,8 @@ except TypeError:
|
|
|
612
617
|
else:
|
|
613
618
|
raise
|
|
614
619
|
|
|
615
|
-
|
|
620
|
+
|
|
621
|
+
class DebugRegister(StaticClass):
|
|
616
622
|
"""
|
|
617
623
|
Class to manipulate debug registers.
|
|
618
624
|
Used by L{HardwareBreakpoint}.
|
|
@@ -720,19 +726,19 @@ class DebugRegister (StaticClass):
|
|
|
720
726
|
Bitmask to clear all meaningful bits in C{Dr6}.
|
|
721
727
|
"""
|
|
722
728
|
|
|
723
|
-
BREAK_ON_EXECUTION
|
|
724
|
-
BREAK_ON_WRITE
|
|
725
|
-
BREAK_ON_ACCESS
|
|
726
|
-
BREAK_ON_IO_ACCESS
|
|
729
|
+
BREAK_ON_EXECUTION = 0
|
|
730
|
+
BREAK_ON_WRITE = 1
|
|
731
|
+
BREAK_ON_ACCESS = 3
|
|
732
|
+
BREAK_ON_IO_ACCESS = 2
|
|
727
733
|
|
|
728
|
-
WATCH_BYTE
|
|
729
|
-
WATCH_WORD
|
|
734
|
+
WATCH_BYTE = 0
|
|
735
|
+
WATCH_WORD = 1
|
|
730
736
|
WATCH_DWORD = 3
|
|
731
737
|
WATCH_QWORD = 2
|
|
732
738
|
|
|
733
739
|
registerMask = _registerMask
|
|
734
740
|
|
|
735
|
-
|
|
741
|
+
# ------------------------------------------------------------------------------
|
|
736
742
|
|
|
737
743
|
###########################################################################
|
|
738
744
|
# http://en.wikipedia.org/wiki/Debug_register
|
|
@@ -759,16 +765,16 @@ class DebugRegister (StaticClass):
|
|
|
759
765
|
|
|
760
766
|
# Dr7 |= enableMask[register]
|
|
761
767
|
enableMask = (
|
|
762
|
-
1 << 0,
|
|
763
|
-
1 << 2,
|
|
764
|
-
1 << 4,
|
|
765
|
-
1 << 6,
|
|
768
|
+
1 << 0, # Dr0 (bit 0)
|
|
769
|
+
1 << 2, # Dr1 (bit 2)
|
|
770
|
+
1 << 4, # Dr2 (bit 4)
|
|
771
|
+
1 << 6, # Dr3 (bit 6)
|
|
766
772
|
)
|
|
767
773
|
|
|
768
774
|
# Dr7 &= disableMask[register]
|
|
769
|
-
disableMask = tuple(
|
|
775
|
+
disableMask = tuple([_registerMask ^ x for x in enableMask]) # The registerMask from the class is not there in py3
|
|
770
776
|
try:
|
|
771
|
-
del x
|
|
777
|
+
del x # It's not there in py3
|
|
772
778
|
except:
|
|
773
779
|
pass
|
|
774
780
|
|
|
@@ -842,14 +848,14 @@ class DebugRegister (StaticClass):
|
|
|
842
848
|
|
|
843
849
|
# Dr7 = Dr7 & clearMask[register]
|
|
844
850
|
clearMask = (
|
|
845
|
-
registerMask ^ (
|
|
846
|
-
registerMask ^ (
|
|
847
|
-
registerMask ^ (
|
|
848
|
-
registerMask ^ (
|
|
851
|
+
registerMask ^ ((1 << 0) + (3 << 16) + (3 << 18)), # Dr0
|
|
852
|
+
registerMask ^ ((1 << 2) + (3 << 20) + (3 << 22)), # Dr1
|
|
853
|
+
registerMask ^ ((1 << 4) + (3 << 24) + (3 << 26)), # Dr2
|
|
854
|
+
registerMask ^ ((1 << 6) + (3 << 28) + (3 << 30)), # Dr3
|
|
849
855
|
)
|
|
850
856
|
|
|
851
857
|
# Dr7 = Dr7 | generalDetectMask
|
|
852
|
-
generalDetectMask =
|
|
858
|
+
generalDetectMask = 1 << 13
|
|
853
859
|
|
|
854
860
|
###########################################################################
|
|
855
861
|
# http://en.wikipedia.org/wiki/Debug_register
|
|
@@ -868,10 +874,18 @@ class DebugRegister (StaticClass):
|
|
|
868
874
|
|
|
869
875
|
# bool(Dr6 & hitMask[register])
|
|
870
876
|
hitMask = (
|
|
871
|
-
(
|
|
872
|
-
|
|
873
|
-
|
|
874
|
-
(
|
|
877
|
+
(
|
|
878
|
+
1 << 0 # Dr0
|
|
879
|
+
),
|
|
880
|
+
(
|
|
881
|
+
1 << 1 # Dr1
|
|
882
|
+
),
|
|
883
|
+
(
|
|
884
|
+
1 << 2 # Dr2
|
|
885
|
+
),
|
|
886
|
+
(
|
|
887
|
+
1 << 3 # Dr3
|
|
888
|
+
),
|
|
875
889
|
)
|
|
876
890
|
|
|
877
891
|
# bool(Dr6 & anyHitMask)
|
|
@@ -881,91 +895,98 @@ class DebugRegister (StaticClass):
|
|
|
881
895
|
clearHitMask = registerMask ^ hitMaskAll
|
|
882
896
|
|
|
883
897
|
# bool(Dr6 & debugAccessMask)
|
|
884
|
-
debugAccessMask =
|
|
898
|
+
debugAccessMask = 1 << 13
|
|
885
899
|
|
|
886
900
|
# bool(Dr6 & singleStepMask)
|
|
887
|
-
singleStepMask
|
|
901
|
+
singleStepMask = 1 << 14
|
|
888
902
|
|
|
889
903
|
# bool(Dr6 & taskSwitchMask)
|
|
890
|
-
taskSwitchMask
|
|
904
|
+
taskSwitchMask = 1 << 15
|
|
891
905
|
|
|
892
906
|
# Dr6 = Dr6 & clearDr6Mask
|
|
893
|
-
clearDr6Mask = registerMask ^ (hitMaskAll |
|
|
894
|
-
debugAccessMask | singleStepMask | taskSwitchMask)
|
|
907
|
+
clearDr6Mask = registerMask ^ (hitMaskAll | debugAccessMask | singleStepMask | taskSwitchMask)
|
|
895
908
|
|
|
896
|
-
|
|
909
|
+
# ------------------------------------------------------------------------------
|
|
897
910
|
|
|
898
|
-
###############################################################################
|
|
899
|
-
#
|
|
900
|
-
# (from the AMD64 manuals)
|
|
901
|
-
#
|
|
902
|
-
# The fields within the DebugCtlMSR register are:
|
|
903
|
-
#
|
|
904
|
-
# Last-Branch Record (LBR) - Bit 0, read/write. Software sets this bit to 1
|
|
905
|
-
# to cause the processor to record the source and target addresses of the
|
|
906
|
-
# last control transfer taken before a debug exception occurs. The recorded
|
|
907
|
-
# control transfers include branch instructions, interrupts, and exceptions.
|
|
908
|
-
#
|
|
909
|
-
# Branch Single Step (BTF) - Bit 1, read/write. Software uses this bit to
|
|
910
|
-
# change the behavior of the rFLAGS.TF bit. When this bit is cleared to 0,
|
|
911
|
-
# the rFLAGS.TF bit controls instruction single stepping, (normal behavior).
|
|
912
|
-
# When this bit is set to 1, the rFLAGS.TF bit controls single stepping on
|
|
913
|
-
# control transfers. The single-stepped control transfers include branch
|
|
914
|
-
# instructions, interrupts, and exceptions. Control-transfer single stepping
|
|
915
|
-
# requires both BTF=1 and rFLAGS.TF=1.
|
|
916
|
-
#
|
|
917
|
-
# Performance-Monitoring/Breakpoint Pin-Control (PBi) - Bits 5-2, read/write.
|
|
918
|
-
# Software uses these bits to control the type of information reported by
|
|
919
|
-
# the four external performance-monitoring/breakpoint pins on the processor.
|
|
920
|
-
# When a PBi bit is cleared to 0, the corresponding external pin (BPi)
|
|
921
|
-
# reports performance-monitor information. When a PBi bit is set to 1, the
|
|
922
|
-
# corresponding external pin (BPi) reports breakpoint information.
|
|
923
|
-
#
|
|
924
|
-
# All remaining bits in the DebugCtlMSR register are reserved.
|
|
925
|
-
#
|
|
926
|
-
# Software can enable control-transfer single stepping by setting
|
|
927
|
-
# DebugCtlMSR.BTF to 1 and rFLAGS.TF to 1. The processor automatically
|
|
928
|
-
# disables control-transfer single stepping when a debug exception (#DB)
|
|
929
|
-
# occurs by clearing DebugCtlMSR.BTF to 0. rFLAGS.TF is also cleared when a
|
|
930
|
-
# #DB exception occurs. Before exiting the debug-exception handler, software
|
|
931
|
-
# must set both DebugCtlMSR.BTF and rFLAGS.TF to 1 to restart single
|
|
932
|
-
# stepping.
|
|
933
|
-
#
|
|
934
|
-
###############################################################################
|
|
935
|
-
|
|
936
|
-
DebugCtlMSR
|
|
937
|
-
LastBranchRecord =
|
|
938
|
-
BranchTrapFlag
|
|
939
|
-
PinControl
|
|
940
|
-
|
|
941
|
-
|
|
942
|
-
|
|
943
|
-
|
|
944
|
-
|
|
945
|
-
|
|
946
|
-
|
|
947
|
-
#
|
|
948
|
-
|
|
949
|
-
|
|
950
|
-
|
|
951
|
-
|
|
952
|
-
|
|
953
|
-
|
|
954
|
-
|
|
955
|
-
#
|
|
956
|
-
#
|
|
957
|
-
#
|
|
958
|
-
#
|
|
959
|
-
#
|
|
960
|
-
#
|
|
961
|
-
|
|
911
|
+
###############################################################################
|
|
912
|
+
#
|
|
913
|
+
# (from the AMD64 manuals)
|
|
914
|
+
#
|
|
915
|
+
# The fields within the DebugCtlMSR register are:
|
|
916
|
+
#
|
|
917
|
+
# Last-Branch Record (LBR) - Bit 0, read/write. Software sets this bit to 1
|
|
918
|
+
# to cause the processor to record the source and target addresses of the
|
|
919
|
+
# last control transfer taken before a debug exception occurs. The recorded
|
|
920
|
+
# control transfers include branch instructions, interrupts, and exceptions.
|
|
921
|
+
#
|
|
922
|
+
# Branch Single Step (BTF) - Bit 1, read/write. Software uses this bit to
|
|
923
|
+
# change the behavior of the rFLAGS.TF bit. When this bit is cleared to 0,
|
|
924
|
+
# the rFLAGS.TF bit controls instruction single stepping, (normal behavior).
|
|
925
|
+
# When this bit is set to 1, the rFLAGS.TF bit controls single stepping on
|
|
926
|
+
# control transfers. The single-stepped control transfers include branch
|
|
927
|
+
# instructions, interrupts, and exceptions. Control-transfer single stepping
|
|
928
|
+
# requires both BTF=1 and rFLAGS.TF=1.
|
|
929
|
+
#
|
|
930
|
+
# Performance-Monitoring/Breakpoint Pin-Control (PBi) - Bits 5-2, read/write.
|
|
931
|
+
# Software uses these bits to control the type of information reported by
|
|
932
|
+
# the four external performance-monitoring/breakpoint pins on the processor.
|
|
933
|
+
# When a PBi bit is cleared to 0, the corresponding external pin (BPi)
|
|
934
|
+
# reports performance-monitor information. When a PBi bit is set to 1, the
|
|
935
|
+
# corresponding external pin (BPi) reports breakpoint information.
|
|
936
|
+
#
|
|
937
|
+
# All remaining bits in the DebugCtlMSR register are reserved.
|
|
938
|
+
#
|
|
939
|
+
# Software can enable control-transfer single stepping by setting
|
|
940
|
+
# DebugCtlMSR.BTF to 1 and rFLAGS.TF to 1. The processor automatically
|
|
941
|
+
# disables control-transfer single stepping when a debug exception (#DB)
|
|
942
|
+
# occurs by clearing DebugCtlMSR.BTF to 0. rFLAGS.TF is also cleared when a
|
|
943
|
+
# #DB exception occurs. Before exiting the debug-exception handler, software
|
|
944
|
+
# must set both DebugCtlMSR.BTF and rFLAGS.TF to 1 to restart single
|
|
945
|
+
# stepping.
|
|
946
|
+
#
|
|
947
|
+
###############################################################################
|
|
948
|
+
|
|
949
|
+
DebugCtlMSR = 0x1D9
|
|
950
|
+
LastBranchRecord = 1 << 0
|
|
951
|
+
BranchTrapFlag = 1 << 1
|
|
952
|
+
PinControl = (
|
|
953
|
+
(
|
|
954
|
+
1 << 2 # PB1
|
|
955
|
+
),
|
|
956
|
+
(
|
|
957
|
+
1 << 3 # PB2
|
|
958
|
+
),
|
|
959
|
+
(
|
|
960
|
+
1 << 4 # PB3
|
|
961
|
+
),
|
|
962
|
+
(
|
|
963
|
+
1 << 5 # PB4
|
|
964
|
+
),
|
|
965
|
+
)
|
|
966
|
+
|
|
967
|
+
###############################################################################
|
|
968
|
+
#
|
|
969
|
+
# (from the AMD64 manuals)
|
|
970
|
+
#
|
|
971
|
+
# Control-transfer recording MSRs: LastBranchToIP, LastBranchFromIP,
|
|
972
|
+
# LastExceptionToIP, and LastExceptionFromIP. These registers are loaded
|
|
973
|
+
# automatically by the processor when the DebugCtlMSR.LBR bit is set to 1.
|
|
974
|
+
# These MSRs are read-only.
|
|
975
|
+
#
|
|
976
|
+
# The processor automatically disables control-transfer recording when a
|
|
977
|
+
# debug exception (#DB) occurs by clearing DebugCtlMSR.LBR to 0. The
|
|
978
|
+
# contents of the control-transfer recording MSRs are not altered by the
|
|
979
|
+
# processor when the #DB occurs. Before exiting the debug-exception handler,
|
|
980
|
+
# software can set DebugCtlMSR.LBR to 1 to re-enable the recording mechanism.
|
|
981
|
+
#
|
|
982
|
+
###############################################################################
|
|
962
983
|
|
|
963
|
-
LastBranchToIP
|
|
964
|
-
LastBranchFromIP
|
|
965
|
-
LastExceptionToIP
|
|
984
|
+
LastBranchToIP = 0x1DC
|
|
985
|
+
LastBranchFromIP = 0x1DB
|
|
986
|
+
LastExceptionToIP = 0x1DE
|
|
966
987
|
LastExceptionFromIP = 0x1DD
|
|
967
988
|
|
|
968
|
-
|
|
989
|
+
# ------------------------------------------------------------------------------
|
|
969
990
|
|
|
970
991
|
@classmethod
|
|
971
992
|
def clear_bp(cls, ctx, register):
|
|
@@ -980,8 +1001,8 @@ class DebugRegister (StaticClass):
|
|
|
980
1001
|
@type register: int
|
|
981
1002
|
@param register: Slot (debug register) for hardware breakpoint.
|
|
982
1003
|
"""
|
|
983
|
-
ctx[
|
|
984
|
-
ctx[
|
|
1004
|
+
ctx["Dr7"] &= cls.clearMask[register]
|
|
1005
|
+
ctx["Dr%d" % register] = 0
|
|
985
1006
|
|
|
986
1007
|
@classmethod
|
|
987
1008
|
def set_bp(cls, ctx, register, address, trigger, watch):
|
|
@@ -1005,7 +1026,7 @@ class DebugRegister (StaticClass):
|
|
|
1005
1026
|
@type watch: int
|
|
1006
1027
|
@param watch: Watch flag. See L{HardwareBreakpoint.validWatchSizes}.
|
|
1007
1028
|
"""
|
|
1008
|
-
Dr7 = ctx[
|
|
1029
|
+
Dr7 = ctx["Dr7"]
|
|
1009
1030
|
Dr7 |= cls.enableMask[register]
|
|
1010
1031
|
orMask, andMask = cls.triggerMask[register][trigger]
|
|
1011
1032
|
Dr7 &= andMask
|
|
@@ -1013,8 +1034,8 @@ class DebugRegister (StaticClass):
|
|
|
1013
1034
|
orMask, andMask = cls.watchMask[register][watch]
|
|
1014
1035
|
Dr7 &= andMask
|
|
1015
1036
|
Dr7 |= orMask
|
|
1016
|
-
ctx[
|
|
1017
|
-
ctx[
|
|
1037
|
+
ctx["Dr7"] = Dr7
|
|
1038
|
+
ctx["Dr%d" % register] = address
|
|
1018
1039
|
|
|
1019
1040
|
@classmethod
|
|
1020
1041
|
def find_slot(cls, ctx):
|
|
@@ -1029,7 +1050,7 @@ class DebugRegister (StaticClass):
|
|
|
1029
1050
|
@rtype: int
|
|
1030
1051
|
@return: Slot (debug register) for hardware breakpoint.
|
|
1031
1052
|
"""
|
|
1032
|
-
Dr7
|
|
1053
|
+
Dr7 = ctx["Dr7"]
|
|
1033
1054
|
slot = 0
|
|
1034
1055
|
for m in cls.enableMask:
|
|
1035
1056
|
if (Dr7 & m) == 0:
|