debugpy 1.8.5__zip → 1.8.7__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.5/src/debugpy.egg-info → debugpy-1.8.7}/PKG-INFO +1 -1
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_calltip_util.py +19 -21
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_completer.py +30 -30
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_execfile.py +3 -1
- debugpy-1.8.7/src/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_filesystem_encoding.py +43 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_getopt.py +35 -32
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_imports_tipper.py +83 -84
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_jy_imports_tipper.py +92 -99
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_log.py +2 -3
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_saved_modules.py +51 -27
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_sys_patch.py +11 -7
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_tipper_common.py +6 -5
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydev_bundle/fsnotify/__init__.py +34 -38
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_console_utils.py +71 -69
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_import_hook.py +1 -3
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_imports.py +0 -1
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_ipython_console.py +14 -16
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_ipython_console_011.py +81 -93
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_is_thread_alive.py +3 -3
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_localhost.py +9 -8
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_log.py +33 -25
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_monkey.py +183 -170
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_monkey_qt.py +33 -29
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_override.py +6 -4
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_umd.py +19 -18
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydev_bundle/pydev_versioncheck.py +3 -3
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydev_runfiles/pydev_runfiles.py +165 -138
- debugpy-1.8.7/src/debugpy/_vendored/pydevd/_pydev_runfiles/pydev_runfiles_coverage.py +77 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydev_runfiles/pydev_runfiles_nose.py +35 -36
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydev_runfiles/pydev_runfiles_parallel.py +22 -23
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydev_runfiles/pydev_runfiles_parallel_client.py +37 -57
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydev_runfiles/pydev_runfiles_pytest2.py +54 -52
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydev_runfiles/pydev_runfiles_unittest.py +28 -37
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydev_runfiles/pydev_runfiles_xml_rpc.py +56 -53
- debugpy-1.8.7/src/debugpy/_vendored/pydevd/_pydevd_bundle/_debug_adapter/__main__pydevd_gen_debug_adapter_protocol.py +604 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_bundle/_debug_adapter/debugProtocol.json +551 -445
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_bundle/_debug_adapter/pydevd_base_schema.py +25 -29
- debugpy-1.8.7/src/debugpy/_vendored/pydevd/_pydevd_bundle/_debug_adapter/pydevd_schema.py +17458 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_bundle/_debug_adapter/pydevd_schema_log.py +11 -12
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevconsole_code.py +18 -19
- debugpy-1.8.7/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_additional_thread_info.py +41 -0
- debugpy-1.8.7/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_additional_thread_info_regular.py +328 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_api.py +263 -214
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_breakpoints.py +7 -10
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_bytecode_utils.py +187 -92
- debugpy-1.8.7/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_bytecode_utils_py311.py +105 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_code_to_source.py +46 -51
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_collect_bytecode_info.py +239 -176
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_comm.py +370 -297
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_comm_constants.py +78 -86
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_command_line_handling.py +55 -59
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_concurrency_analyser/pydevd_concurrency_logger.py +194 -58
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_concurrency_analyser/pydevd_thread_wrappers.py +2 -3
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_console.py +18 -23
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_constants.py +159 -127
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_custom_frames.py +10 -12
- debugpy-1.8.7/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_cython.c +55527 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_cython.pxd +15 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_cython.pyx +803 -511
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_cython_wrapper.py +18 -7
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_daemon_thread.py +32 -24
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_defaults.py +11 -13
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_dont_trace.py +16 -16
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_dont_trace_files.py +27 -2
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_exec2.py +1 -1
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_extension_api.py +4 -5
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_extension_utils.py +8 -10
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_filtering.py +50 -45
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_frame.py +462 -407
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_frame_utils.py +69 -61
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_gevent_integration.py +14 -16
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_import_class.py +27 -25
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_io.py +40 -42
- debugpy-1.8.7/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_json_debug_options.py +200 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_net_command.py +20 -19
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_net_command_factory_json.py +199 -108
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_net_command_factory_xml.py +121 -73
- debugpy-1.8.7/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_plugin_utils.py +208 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_process_net_command.py +206 -159
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_process_net_command_json.py +346 -334
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_referrers.py +75 -80
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_reload.py +35 -35
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_resolver.py +116 -124
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_runpy.py +44 -58
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_safe_repr.py +51 -55
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_save_locals.py +4 -2
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_signature.py +24 -24
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_source_mapping.py +19 -20
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_stackless.py +45 -49
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_suspended_frames.py +61 -58
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_thread_lifecycle.py +23 -13
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_timeout.py +29 -31
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_trace_dispatch.py +41 -11
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_trace_dispatch_regular.py +117 -55
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_traceproperty.py +11 -14
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_utils.py +90 -89
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_vars.py +106 -97
- debugpy-1.8.7/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_vm_type.py +40 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_xml.py +56 -46
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/pydevd_frame_eval_cython_wrapper.py +5 -5
- debugpy-1.8.7/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/pydevd_frame_eval_main.py +71 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/pydevd_frame_evaluator.c +11165 -5326
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/pydevd_frame_tracing.py +5 -6
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/pydevd_modify_bytecode.py +53 -56
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/__init__.py +1 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/bytecode.py +4 -6
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/cfg.py +6 -26
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/concrete.py +7 -21
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/flags.py +5 -24
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/instr.py +10 -34
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/peephole_opt.py +1 -4
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/__init__.py +2 -6
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/test_bytecode.py +3 -5
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/test_cfg.py +11 -31
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/test_code.py +2 -2
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/test_concrete.py +14 -41
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/test_flags.py +2 -4
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/test_instr.py +7 -18
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/test_misc.py +6 -18
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/test_peephole_opt.py +7 -18
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/bytecode/tests/util_annotation.py +1 -3
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/pydevd_fix_code.py +14 -19
- debugpy-1.8.7/src/debugpy/_vendored/pydevd/_pydevd_sys_monitoring/_pydevd_sys_monitoring.py +1929 -0
- debugpy-1.8.7/src/debugpy/_vendored/pydevd/_pydevd_sys_monitoring/_pydevd_sys_monitoring_cython.c +43253 -0
- debugpy-1.8.7/src/debugpy/_vendored/pydevd/_pydevd_sys_monitoring/_pydevd_sys_monitoring_cython.pxd +46 -0
- debugpy-1.8.7/src/debugpy/_vendored/pydevd/_pydevd_sys_monitoring/_pydevd_sys_monitoring_cython.pyx +1935 -0
- debugpy-1.8.7/src/debugpy/_vendored/pydevd/_pydevd_sys_monitoring/pydevd_sys_monitoring.py +16 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydev_app_engine_debug_startup.py +12 -11
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydev_coverage.py +30 -32
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydev_ipython/inputhook.py +58 -54
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydev_ipython/inputhookglut.py +20 -24
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydev_ipython/inputhookgtk.py +8 -7
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydev_ipython/inputhookgtk3.py +8 -6
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydev_ipython/inputhookpyglet.py +11 -8
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydev_ipython/inputhookqt4.py +21 -18
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydev_ipython/inputhookqt5.py +17 -15
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydev_ipython/inputhookqt6.py +17 -15
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydev_ipython/inputhooktk.py +6 -4
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydev_ipython/inputhookwx.py +14 -10
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydev_ipython/matplotlibtools.py +30 -26
- debugpy-1.8.7/src/debugpy/_vendored/pydevd/pydev_ipython/qt.py +24 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydev_ipython/qt_for_kernel.py +37 -34
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydev_ipython/qt_loaders.py +86 -73
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydev_ipython/version.py +7 -7
- debugpy-1.8.7/src/debugpy/_vendored/pydevd/pydev_pysrc.py +1 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydev_run_in_console.py +23 -24
- debugpy-1.8.7/src/debugpy/_vendored/pydevd/pydev_sitecustomize/sitecustomize.py +267 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevconsole.py +55 -47
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevd.py +732 -508
- debugpy-1.8.7/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/_always_live_program.py +40 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/_check.py +1 -0
- debugpy-1.8.7/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/_test_attach_to_process.py +11 -0
- debugpy-1.8.7/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/_test_attach_to_process_linux.py +75 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/add_code_to_python_process.py +130 -125
- debugpy-1.8.7/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/attach_amd64.dll +0 -0
- debugpy-1.8.7/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/attach_amd64.pdb +0 -0
- debugpy-1.8.7/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/attach_pydevd.py +89 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/attach_script.py +41 -32
- debugpy-1.8.7/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/attach_x86.dll +0 -0
- debugpy-1.8.7/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/attach_x86.pdb +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/common/py_utils.hpp +1 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/common/py_version.hpp +9 -1
- debugpy-1.8.7/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/inject_dll_amd64.exe +0 -0
- debugpy-1.8.7/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/inject_dll_amd64.pdb +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/inject_dll_x86.exe +0 -0
- debugpy-1.8.7/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/inject_dll_x86.pdb +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/linux_and_mac/lldb_prepare.py +10 -9
- debugpy-1.8.7/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/run_code_on_dllmain_amd64.dll +0 -0
- debugpy-1.8.7/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/run_code_on_dllmain_amd64.pdb +0 -0
- debugpy-1.8.7/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/run_code_on_dllmain_x86.dll +0 -0
- debugpy-1.8.7/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/run_code_on_dllmain_x86.pdb +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/__init__.py +103 -119
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/breakpoint.py +457 -516
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/compat.py +33 -15
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/crash.py +336 -281
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/debug.py +101 -131
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/disasm.py +148 -153
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/event.py +310 -302
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/interactive.py +235 -208
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/module.py +185 -218
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/process.py +428 -564
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/registry.py +54 -53
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/search.py +69 -73
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/sql.py +158 -170
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/system.py +143 -213
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/textio.py +302 -333
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/thread.py +220 -239
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/util.py +198 -177
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/__init__.py +11 -11
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/advapi32.py +1191 -713
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/context_amd64.py +248 -194
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/context_i386.py +132 -120
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/dbghelp.py +450 -346
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/defines.py +305 -286
- debugpy-1.8.7/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/gdi32.py +526 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/kernel32.py +1479 -1097
- debugpy-1.8.7/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/ntdll.py +579 -0
- debugpy-1.8.7/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/peb_teb.py +3517 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/psapi.py +54 -31
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/shell32.py +170 -149
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/shlwapi.py +190 -108
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/user32.py +542 -437
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/version.py +489 -442
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/wtsapi32.py +83 -65
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/window.py +70 -76
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/windows/attach.cpp +17 -9
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/windows/compile_windows.bat +1 -1
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevd_file_utils.py +141 -120
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevd_plugins/__init__.py +1 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevd_plugins/django_debug.py +175 -149
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevd_plugins/extensions/__init__.py +1 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevd_plugins/extensions/types/__init__.py +1 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevd_plugins/extensions/types/pydevd_helpers.py +5 -5
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevd_plugins/extensions/types/pydevd_plugin_numpy_types.py +28 -28
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevd_plugins/extensions/types/pydevd_plugin_pandas_types.py +22 -30
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevd_plugins/extensions/types/pydevd_plugins_django_form_str.py +3 -2
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevd_plugins/jinja2_debug.py +130 -108
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevd_plugins/pydevd_line_validation.py +27 -14
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevd_tracing.py +85 -66
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/setup_pydevd_cython.py +96 -59
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_version.py +3 -3
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/common/messaging.py +2 -1
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/server/cli.py +32 -17
- {debugpy-1.8.5 → debugpy-1.8.7/src/debugpy.egg-info}/PKG-INFO +1 -1
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy.egg-info/SOURCES.txt +6 -1
- debugpy-1.8.5/src/debugpy/_vendored/pydevd/_pydev_bundle/_pydev_filesystem_encoding.py +0 -41
- debugpy-1.8.5/src/debugpy/_vendored/pydevd/_pydev_runfiles/pydev_runfiles_coverage.py +0 -76
- debugpy-1.8.5/src/debugpy/_vendored/pydevd/_pydevd_bundle/_debug_adapter/__main__pydevd_gen_debug_adapter_protocol.py +0 -592
- debugpy-1.8.5/src/debugpy/_vendored/pydevd/_pydevd_bundle/_debug_adapter/pydevd_schema.py +0 -19514
- debugpy-1.8.5/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_additional_thread_info.py +0 -19
- debugpy-1.8.5/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_additional_thread_info_regular.py +0 -153
- debugpy-1.8.5/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_cython.c +0 -43377
- debugpy-1.8.5/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_json_debug_options.py +0 -204
- debugpy-1.8.5/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_plugin_utils.py +0 -91
- debugpy-1.8.5/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_trace_api.py +0 -62
- debugpy-1.8.5/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_vm_type.py +0 -41
- debugpy-1.8.5/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/pydevd_frame_eval_main.py +0 -48
- debugpy-1.8.5/src/debugpy/_vendored/pydevd/pydev_ipython/qt.py +0 -23
- debugpy-1.8.5/src/debugpy/_vendored/pydevd/pydev_pysrc.py +0 -1
- debugpy-1.8.5/src/debugpy/_vendored/pydevd/pydev_sitecustomize/sitecustomize.py +0 -237
- debugpy-1.8.5/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/_always_live_program.py +0 -32
- debugpy-1.8.5/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/_test_attach_to_process.py +0 -9
- debugpy-1.8.5/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/_test_attach_to_process_linux.py +0 -74
- debugpy-1.8.5/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/attach_amd64.dll +0 -0
- debugpy-1.8.5/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/attach_amd64.pdb +0 -0
- debugpy-1.8.5/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/attach_pydevd.py +0 -79
- debugpy-1.8.5/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/attach_x86.dll +0 -0
- debugpy-1.8.5/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/attach_x86.pdb +0 -0
- debugpy-1.8.5/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/inject_dll_amd64.exe +0 -0
- debugpy-1.8.5/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/inject_dll_amd64.pdb +0 -0
- debugpy-1.8.5/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/inject_dll_x86.pdb +0 -0
- debugpy-1.8.5/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/run_code_on_dllmain_amd64.dll +0 -0
- debugpy-1.8.5/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/run_code_on_dllmain_amd64.pdb +0 -0
- debugpy-1.8.5/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/run_code_on_dllmain_x86.dll +0 -0
- debugpy-1.8.5/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/run_code_on_dllmain_x86.pdb +0 -0
- debugpy-1.8.5/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/gdi32.py +0 -507
- debugpy-1.8.5/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/ntdll.py +0 -539
- debugpy-1.8.5/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/winappdbg/win32/peb_teb.py +0 -3435
- {debugpy-1.8.5 → debugpy-1.8.7}/DESCRIPTION.md +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/LICENSE +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/MANIFEST.in +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/README.md +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/pyproject.toml +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/setup.cfg +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/setup.py +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/ThirdPartyNotices.txt +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/__init__.py +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/__main__.py +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/__init__.py +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/_pydevd_packaging.py +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/_util.py +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/force_pydevd.py +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydev_bundle/__init__.py +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydev_runfiles/__init__.py +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_bundle/__init__.py +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_bundle/_debug_adapter/__init__.py +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_bundle/_debug_adapter/debugProtocolCustom.json +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_concurrency_analyser/__init__.py +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/.gitignore +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/__init__.py +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/pydevd_frame_evaluator.pxd +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/pydevd_frame_evaluator.pyx +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/pydevd_frame_evaluator.template.pyx +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/release_mem.h +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/README.txt +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/_pydevd_frame_eval/vendored/__init__.py +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydev_ipython/README +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydev_ipython/__init__.py +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydev_sitecustomize/__not_in_default_pythonpath.txt +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/README.txt +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/common/py_custom_pyeval_settrace.hpp +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/common/py_custom_pyeval_settrace_310.hpp +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/common/py_custom_pyeval_settrace_311.hpp +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/common/py_custom_pyeval_settrace_common.hpp +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/common/py_settrace.hpp +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/common/python.h +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/common/ref_utils.hpp +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/linux_and_mac/.gitignore +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/linux_and_mac/attach.cpp +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/linux_and_mac/compile_linux.sh +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/linux_and_mac/compile_mac.sh +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/linux_and_mac/compile_manylinux.cmd +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/windows/attach.h +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/windows/inject_dll.cpp +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/windows/py_win_helpers.hpp +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/windows/run_code_in_memory.hpp +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/windows/run_code_on_dllmain.cpp +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/windows/stdafx.cpp +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/windows/stdafx.h +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevd_attach_to_process/windows/targetver.h +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/_vendored/pydevd/pydevd_plugins/extensions/README.md +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/adapter/__init__.py +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/adapter/__main__.py +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/adapter/clients.py +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/adapter/components.py +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/adapter/launchers.py +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/adapter/servers.py +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/adapter/sessions.py +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/common/__init__.py +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/common/json.py +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/common/log.py +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/common/singleton.py +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/common/sockets.py +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/common/stacks.py +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/common/timestamp.py +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/common/util.py +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/launcher/__init__.py +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/launcher/__main__.py +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/launcher/debuggee.py +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/launcher/handlers.py +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/launcher/output.py +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/launcher/winapi.py +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/public_api.py +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/server/__init__.py +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/server/api.py +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy/server/attach_pid_injected.py +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy.egg-info/dependency_links.txt +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy.egg-info/entry_points.txt +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/src/debugpy.egg-info/top_level.txt +0 -0
- {debugpy-1.8.5 → debugpy-1.8.7}/versioneer.py +0 -0
|
@@ -40,7 +40,7 @@ Debugging.
|
|
|
40
40
|
|
|
41
41
|
__revision__ = "$Id$"
|
|
42
42
|
|
|
43
|
-
__all__ = [
|
|
43
|
+
__all__ = ["Debug", "MixedBitsWarning"]
|
|
44
44
|
|
|
45
45
|
import sys
|
|
46
46
|
from winappdbg import win32
|
|
@@ -56,17 +56,19 @@ from winappdbg.interactive import ConsoleDebugger
|
|
|
56
56
|
import warnings
|
|
57
57
|
##import traceback
|
|
58
58
|
|
|
59
|
-
|
|
59
|
+
# ==============================================================================
|
|
60
|
+
|
|
60
61
|
|
|
61
62
|
# If you set this warning to be considered as an error, you can stop the
|
|
62
63
|
# debugger from attaching to 64-bit processes from a 32-bit Python VM and
|
|
63
64
|
# visceversa.
|
|
64
|
-
class MixedBitsWarning
|
|
65
|
+
class MixedBitsWarning(RuntimeWarning):
|
|
65
66
|
"""
|
|
66
67
|
This warning is issued when mixing 32 and 64 bit processes.
|
|
67
68
|
"""
|
|
68
69
|
|
|
69
|
-
|
|
70
|
+
|
|
71
|
+
# ==============================================================================
|
|
70
72
|
|
|
71
73
|
# TODO
|
|
72
74
|
# * Add memory read and write operations, similar to those in the Process
|
|
@@ -81,7 +83,8 @@ class MixedBitsWarning (RuntimeWarning):
|
|
|
81
83
|
# not such a great idea to use the snapshot to store data that really belongs
|
|
82
84
|
# to the Debug class.
|
|
83
85
|
|
|
84
|
-
|
|
86
|
+
|
|
87
|
+
class Debug(EventDispatcher, _BreakpointContainer):
|
|
85
88
|
"""
|
|
86
89
|
The main debugger class.
|
|
87
90
|
|
|
@@ -107,8 +110,7 @@ class Debug (EventDispatcher, _BreakpointContainer):
|
|
|
107
110
|
# Automatically set to True the first time a Debug object is instanced.
|
|
108
111
|
_debug_static_init = False
|
|
109
112
|
|
|
110
|
-
def __init__(self, eventHandler
|
|
111
|
-
bHostileCode = False):
|
|
113
|
+
def __init__(self, eventHandler=None, bKillOnExit=False, bHostileCode=False):
|
|
112
114
|
"""
|
|
113
115
|
Debugger object.
|
|
114
116
|
|
|
@@ -141,14 +143,14 @@ class Debug (EventDispatcher, _BreakpointContainer):
|
|
|
141
143
|
EventDispatcher.__init__(self, eventHandler)
|
|
142
144
|
_BreakpointContainer.__init__(self)
|
|
143
145
|
|
|
144
|
-
self.system
|
|
145
|
-
self.lastEvent
|
|
146
|
-
self.__firstDebugee
|
|
147
|
-
self.__bKillOnExit
|
|
148
|
-
self.__bHostileCode
|
|
149
|
-
self.__breakOnEP
|
|
150
|
-
self.__attachedDebugees
|
|
151
|
-
self.__startedDebugees
|
|
146
|
+
self.system = System()
|
|
147
|
+
self.lastEvent = None
|
|
148
|
+
self.__firstDebugee = True
|
|
149
|
+
self.__bKillOnExit = bKillOnExit
|
|
150
|
+
self.__bHostileCode = bHostileCode
|
|
151
|
+
self.__breakOnEP = set() # set of pids
|
|
152
|
+
self.__attachedDebugees = set() # set of pids
|
|
153
|
+
self.__startedDebugees = set() # set of pids
|
|
152
154
|
|
|
153
155
|
if not self._debug_static_init:
|
|
154
156
|
self._debug_static_init = True
|
|
@@ -156,19 +158,19 @@ class Debug (EventDispatcher, _BreakpointContainer):
|
|
|
156
158
|
# Request debug privileges for the current process.
|
|
157
159
|
# Only do this once, and only after instancing a Debug object,
|
|
158
160
|
# so passive debuggers don't get detected because of this.
|
|
159
|
-
self.system.request_debug_privileges(bIgnoreExceptions
|
|
161
|
+
self.system.request_debug_privileges(bIgnoreExceptions=False)
|
|
160
162
|
|
|
161
163
|
# Try to fix the symbol store path if it wasn't set.
|
|
162
164
|
# But don't enable symbol downloading by default, since it may
|
|
163
165
|
# degrade performance severely.
|
|
164
|
-
self.system.fix_symbol_store_path(remote
|
|
166
|
+
self.system.fix_symbol_store_path(remote=False, force=False)
|
|
165
167
|
|
|
166
|
-
## # It's hard not to create circular references,
|
|
167
|
-
## # and if we have a destructor, we can end up leaking everything.
|
|
168
|
-
## # It's best to code the debugging loop properly to always
|
|
169
|
-
## # stop the debugger before going out of scope.
|
|
170
|
-
## def __del__(self):
|
|
171
|
-
## self.stop()
|
|
168
|
+
## # It's hard not to create circular references,
|
|
169
|
+
## # and if we have a destructor, we can end up leaking everything.
|
|
170
|
+
## # It's best to code the debugging loop properly to always
|
|
171
|
+
## # stop the debugger before going out of scope.
|
|
172
|
+
## def __del__(self):
|
|
173
|
+
## self.stop()
|
|
172
174
|
|
|
173
175
|
def __enter__(self):
|
|
174
176
|
"""
|
|
@@ -193,7 +195,7 @@ class Debug (EventDispatcher, _BreakpointContainer):
|
|
|
193
195
|
# it already does work (because of __len__) but it'd be
|
|
194
196
|
# useful to do it from the event handler anyway
|
|
195
197
|
|
|
196
|
-
|
|
198
|
+
# ------------------------------------------------------------------------------
|
|
197
199
|
|
|
198
200
|
def __setSystemKillOnExitMode(self):
|
|
199
201
|
# Make sure the default system behavior on detaching from processes
|
|
@@ -237,8 +239,7 @@ class Debug (EventDispatcher, _BreakpointContainer):
|
|
|
237
239
|
# This also allows the user to stop attaching altogether,
|
|
238
240
|
# depending on how the warnings are configured.
|
|
239
241
|
if System.bits != aProcess.get_bits():
|
|
240
|
-
msg = "Mixture of 32 and 64 bits is considered experimental."
|
|
241
|
-
" Use at your own risk!"
|
|
242
|
+
msg = "Mixture of 32 and 64 bits is considered experimental." " Use at your own risk!"
|
|
242
243
|
warnings.warn(msg, MixedBitsWarning)
|
|
243
244
|
|
|
244
245
|
# Attach to the process.
|
|
@@ -434,55 +435,46 @@ class Debug (EventDispatcher, _BreakpointContainer):
|
|
|
434
435
|
warnings.warn("Debug.execl expects a string")
|
|
435
436
|
|
|
436
437
|
# Set the "debug" flag to True.
|
|
437
|
-
kwargs[
|
|
438
|
+
kwargs["bDebug"] = True
|
|
438
439
|
|
|
439
440
|
# Pop the "break on entry point" flag.
|
|
440
|
-
bBreakOnEntryPoint = kwargs.pop(
|
|
441
|
+
bBreakOnEntryPoint = kwargs.pop("bBreakOnEntryPoint", False)
|
|
441
442
|
|
|
442
443
|
# Set the default trust level if requested.
|
|
443
|
-
if
|
|
444
|
+
if "iTrustLevel" not in kwargs:
|
|
444
445
|
if self.__bHostileCode:
|
|
445
|
-
kwargs[
|
|
446
|
+
kwargs["iTrustLevel"] = 0
|
|
446
447
|
else:
|
|
447
|
-
kwargs[
|
|
448
|
+
kwargs["iTrustLevel"] = 2
|
|
448
449
|
|
|
449
450
|
# Set the default UAC elevation flag if requested.
|
|
450
|
-
if
|
|
451
|
-
kwargs[
|
|
451
|
+
if "bAllowElevation" not in kwargs:
|
|
452
|
+
kwargs["bAllowElevation"] = not self.__bHostileCode
|
|
452
453
|
|
|
453
454
|
# In hostile mode the default parent process is explorer.exe.
|
|
454
455
|
# Only supported for Windows Vista and above.
|
|
455
|
-
if self.__bHostileCode and not kwargs.get(
|
|
456
|
+
if self.__bHostileCode and not kwargs.get("dwParentProcessId", None):
|
|
456
457
|
try:
|
|
457
458
|
vista_and_above = self.__vista_and_above
|
|
458
459
|
except AttributeError:
|
|
459
460
|
osi = win32.OSVERSIONINFOEXW()
|
|
460
461
|
osi.dwMajorVersion = 6
|
|
461
462
|
osi.dwMinorVersion = 0
|
|
462
|
-
osi.dwPlatformId
|
|
463
|
+
osi.dwPlatformId = win32.VER_PLATFORM_WIN32_NT
|
|
463
464
|
mask = 0
|
|
464
|
-
mask = win32.VerSetConditionMask(mask,
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
mask = win32.VerSetConditionMask(mask,
|
|
471
|
-
win32.VER_PLATFORMID,
|
|
472
|
-
win32.VER_EQUAL)
|
|
473
|
-
vista_and_above = win32.VerifyVersionInfoW(osi,
|
|
474
|
-
win32.VER_MAJORVERSION | \
|
|
475
|
-
win32.VER_MINORVERSION | \
|
|
476
|
-
win32.VER_PLATFORMID,
|
|
477
|
-
mask)
|
|
465
|
+
mask = win32.VerSetConditionMask(mask, win32.VER_MAJORVERSION, win32.VER_GREATER_EQUAL)
|
|
466
|
+
mask = win32.VerSetConditionMask(mask, win32.VER_MAJORVERSION, win32.VER_GREATER_EQUAL)
|
|
467
|
+
mask = win32.VerSetConditionMask(mask, win32.VER_PLATFORMID, win32.VER_EQUAL)
|
|
468
|
+
vista_and_above = win32.VerifyVersionInfoW(
|
|
469
|
+
osi, win32.VER_MAJORVERSION | win32.VER_MINORVERSION | win32.VER_PLATFORMID, mask
|
|
470
|
+
)
|
|
478
471
|
self.__vista_and_above = vista_and_above
|
|
479
472
|
if vista_and_above:
|
|
480
473
|
dwParentProcessId = self.system.get_explorer_pid()
|
|
481
474
|
if dwParentProcessId:
|
|
482
|
-
kwargs[
|
|
475
|
+
kwargs["dwParentProcessId"] = dwParentProcessId
|
|
483
476
|
else:
|
|
484
|
-
msg =
|
|
485
|
-
" Using the debugger as parent process.")
|
|
477
|
+
msg = 'Failed to find "explorer.exe"!' " Using the debugger as parent process."
|
|
486
478
|
warnings.warn(msg, RuntimeWarning)
|
|
487
479
|
|
|
488
480
|
# Start the new process.
|
|
@@ -498,8 +490,7 @@ class Debug (EventDispatcher, _BreakpointContainer):
|
|
|
498
490
|
# This also allows the user to stop attaching altogether,
|
|
499
491
|
# depending on how the warnings are configured.
|
|
500
492
|
if System.bits != aProcess.get_bits():
|
|
501
|
-
msg = "Mixture of 32 and 64 bits is considered experimental."
|
|
502
|
-
" Use at your own risk!"
|
|
493
|
+
msg = "Mixture of 32 and 64 bits is considered experimental." " Use at your own risk!"
|
|
503
494
|
warnings.warn(msg, MixedBitsWarning)
|
|
504
495
|
|
|
505
496
|
# Add the new PID to the set of debugees.
|
|
@@ -533,7 +524,7 @@ class Debug (EventDispatcher, _BreakpointContainer):
|
|
|
533
524
|
pass
|
|
534
525
|
raise
|
|
535
526
|
|
|
536
|
-
def add_existing_session(self, dwProcessId, bStarted
|
|
527
|
+
def add_existing_session(self, dwProcessId, bStarted=False):
|
|
537
528
|
"""
|
|
538
529
|
Use this method only when for some reason the debugger's been attached
|
|
539
530
|
to the target outside of WinAppDbg (for example when integrating with
|
|
@@ -579,7 +570,7 @@ class Debug (EventDispatcher, _BreakpointContainer):
|
|
|
579
570
|
aProcess.scan_threads()
|
|
580
571
|
aProcess.scan_modules()
|
|
581
572
|
|
|
582
|
-
def __cleanup_process(self, dwProcessId, bIgnoreExceptions
|
|
573
|
+
def __cleanup_process(self, dwProcessId, bIgnoreExceptions=False):
|
|
583
574
|
"""
|
|
584
575
|
Perform the necessary cleanup of a process about to be killed or
|
|
585
576
|
detached from.
|
|
@@ -598,14 +589,13 @@ class Debug (EventDispatcher, _BreakpointContainer):
|
|
|
598
589
|
"""
|
|
599
590
|
# If the process is being debugged...
|
|
600
591
|
if self.is_debugee(dwProcessId):
|
|
601
|
-
|
|
602
592
|
# Make sure a Process object exists or the following calls fail.
|
|
603
593
|
if not self.system.has_process(dwProcessId):
|
|
604
594
|
aProcess = Process(dwProcessId)
|
|
605
595
|
try:
|
|
606
596
|
aProcess.get_handle()
|
|
607
597
|
except WindowsError:
|
|
608
|
-
pass
|
|
598
|
+
pass # fails later on with more specific reason
|
|
609
599
|
self.system._add_process(aProcess)
|
|
610
600
|
|
|
611
601
|
# Erase all breakpoints in the process.
|
|
@@ -663,7 +653,7 @@ class Debug (EventDispatcher, _BreakpointContainer):
|
|
|
663
653
|
e = sys.exc_info()[1]
|
|
664
654
|
warnings.warn(str(e), RuntimeWarning)
|
|
665
655
|
|
|
666
|
-
def kill(self, dwProcessId, bIgnoreExceptions
|
|
656
|
+
def kill(self, dwProcessId, bIgnoreExceptions=False):
|
|
667
657
|
"""
|
|
668
658
|
Kills a process currently being debugged.
|
|
669
659
|
|
|
@@ -687,8 +677,7 @@ class Debug (EventDispatcher, _BreakpointContainer):
|
|
|
687
677
|
aProcess = Process(dwProcessId)
|
|
688
678
|
|
|
689
679
|
# Cleanup all data referring to the process.
|
|
690
|
-
self.__cleanup_process(dwProcessId,
|
|
691
|
-
bIgnoreExceptions = bIgnoreExceptions)
|
|
680
|
+
self.__cleanup_process(dwProcessId, bIgnoreExceptions=bIgnoreExceptions)
|
|
692
681
|
|
|
693
682
|
# Kill the process.
|
|
694
683
|
try:
|
|
@@ -698,8 +687,7 @@ class Debug (EventDispatcher, _BreakpointContainer):
|
|
|
698
687
|
if aProcess.is_alive():
|
|
699
688
|
aProcess.suspend()
|
|
700
689
|
finally:
|
|
701
|
-
self.detach(dwProcessId,
|
|
702
|
-
bIgnoreExceptions = bIgnoreExceptions)
|
|
690
|
+
self.detach(dwProcessId, bIgnoreExceptions=bIgnoreExceptions)
|
|
703
691
|
finally:
|
|
704
692
|
aProcess.kill()
|
|
705
693
|
except Exception:
|
|
@@ -717,7 +705,7 @@ class Debug (EventDispatcher, _BreakpointContainer):
|
|
|
717
705
|
e = sys.exc_info()[1]
|
|
718
706
|
warnings.warn(str(e), RuntimeWarning)
|
|
719
707
|
|
|
720
|
-
def kill_all(self, bIgnoreExceptions
|
|
708
|
+
def kill_all(self, bIgnoreExceptions=False):
|
|
721
709
|
"""
|
|
722
710
|
Kills from all processes currently being debugged.
|
|
723
711
|
|
|
@@ -730,9 +718,9 @@ class Debug (EventDispatcher, _BreakpointContainer):
|
|
|
730
718
|
C{bIgnoreExceptions} is C{True}.
|
|
731
719
|
"""
|
|
732
720
|
for pid in self.get_debugee_pids():
|
|
733
|
-
self.kill(pid, bIgnoreExceptions
|
|
721
|
+
self.kill(pid, bIgnoreExceptions=bIgnoreExceptions)
|
|
734
722
|
|
|
735
|
-
def detach(self, dwProcessId, bIgnoreExceptions
|
|
723
|
+
def detach(self, dwProcessId, bIgnoreExceptions=False):
|
|
736
724
|
"""
|
|
737
725
|
Detaches from a process currently being debugged.
|
|
738
726
|
|
|
@@ -769,8 +757,7 @@ class Debug (EventDispatcher, _BreakpointContainer):
|
|
|
769
757
|
# Continue the last event before detaching.
|
|
770
758
|
# XXX not sure about this...
|
|
771
759
|
try:
|
|
772
|
-
if can_detach and self.lastEvent and
|
|
773
|
-
self.lastEvent.get_pid() == dwProcessId:
|
|
760
|
+
if can_detach and self.lastEvent and self.lastEvent.get_pid() == dwProcessId:
|
|
774
761
|
self.cont(self.lastEvent)
|
|
775
762
|
except Exception:
|
|
776
763
|
if not bIgnoreExceptions:
|
|
@@ -779,8 +766,7 @@ class Debug (EventDispatcher, _BreakpointContainer):
|
|
|
779
766
|
warnings.warn(str(e), RuntimeWarning)
|
|
780
767
|
|
|
781
768
|
# Cleanup all data referring to the process.
|
|
782
|
-
self.__cleanup_process(dwProcessId,
|
|
783
|
-
bIgnoreExceptions = bIgnoreExceptions)
|
|
769
|
+
self.__cleanup_process(dwProcessId, bIgnoreExceptions=bIgnoreExceptions)
|
|
784
770
|
|
|
785
771
|
try:
|
|
786
772
|
# Detach from the process.
|
|
@@ -803,11 +789,10 @@ class Debug (EventDispatcher, _BreakpointContainer):
|
|
|
803
789
|
warnings.warn(str(e), RuntimeWarning)
|
|
804
790
|
|
|
805
791
|
finally:
|
|
806
|
-
|
|
807
792
|
# Cleanup what remains of the process data.
|
|
808
793
|
aProcess.clear()
|
|
809
794
|
|
|
810
|
-
def detach_from_all(self, bIgnoreExceptions
|
|
795
|
+
def detach_from_all(self, bIgnoreExceptions=False):
|
|
811
796
|
"""
|
|
812
797
|
Detaches from all processes currently being debugged.
|
|
813
798
|
|
|
@@ -821,11 +806,11 @@ class Debug (EventDispatcher, _BreakpointContainer):
|
|
|
821
806
|
C{bIgnoreExceptions} is C{True}.
|
|
822
807
|
"""
|
|
823
808
|
for pid in self.get_debugee_pids():
|
|
824
|
-
self.detach(pid, bIgnoreExceptions
|
|
809
|
+
self.detach(pid, bIgnoreExceptions=bIgnoreExceptions)
|
|
825
810
|
|
|
826
|
-
|
|
811
|
+
# ------------------------------------------------------------------------------
|
|
827
812
|
|
|
828
|
-
def wait(self, dwMilliseconds
|
|
813
|
+
def wait(self, dwMilliseconds=None):
|
|
829
814
|
"""
|
|
830
815
|
Waits for the next debug event.
|
|
831
816
|
|
|
@@ -844,7 +829,7 @@ class Debug (EventDispatcher, _BreakpointContainer):
|
|
|
844
829
|
"""
|
|
845
830
|
|
|
846
831
|
# Wait for the next debug event.
|
|
847
|
-
raw
|
|
832
|
+
raw = win32.WaitForDebugEvent(dwMilliseconds)
|
|
848
833
|
event = EventFactory.get(self, raw)
|
|
849
834
|
|
|
850
835
|
# Remember it.
|
|
@@ -853,7 +838,7 @@ class Debug (EventDispatcher, _BreakpointContainer):
|
|
|
853
838
|
# Return it.
|
|
854
839
|
return event
|
|
855
840
|
|
|
856
|
-
def dispatch(self, event
|
|
841
|
+
def dispatch(self, event=None):
|
|
857
842
|
"""
|
|
858
843
|
Calls the debug event notify callbacks.
|
|
859
844
|
|
|
@@ -881,7 +866,6 @@ class Debug (EventDispatcher, _BreakpointContainer):
|
|
|
881
866
|
|
|
882
867
|
code = event.get_event_code()
|
|
883
868
|
if code == win32.EXCEPTION_DEBUG_EVENT:
|
|
884
|
-
|
|
885
869
|
# At this point, by default some exception types are swallowed by
|
|
886
870
|
# the debugger, because we don't know yet if it was caused by the
|
|
887
871
|
# debugger itself or the debugged process.
|
|
@@ -899,11 +883,11 @@ class Debug (EventDispatcher, _BreakpointContainer):
|
|
|
899
883
|
|
|
900
884
|
exc_code = event.get_exception_code()
|
|
901
885
|
if exc_code in (
|
|
902
|
-
|
|
903
|
-
|
|
904
|
-
|
|
905
|
-
|
|
906
|
-
|
|
886
|
+
win32.EXCEPTION_BREAKPOINT,
|
|
887
|
+
win32.EXCEPTION_WX86_BREAKPOINT,
|
|
888
|
+
win32.EXCEPTION_SINGLE_STEP,
|
|
889
|
+
win32.EXCEPTION_GUARD_PAGE,
|
|
890
|
+
):
|
|
907
891
|
event.continueStatus = win32.DBG_CONTINUE
|
|
908
892
|
elif exc_code == win32.EXCEPTION_INVALID_HANDLE:
|
|
909
893
|
if self.__bHostileCode:
|
|
@@ -913,14 +897,11 @@ class Debug (EventDispatcher, _BreakpointContainer):
|
|
|
913
897
|
else:
|
|
914
898
|
event.continueStatus = win32.DBG_EXCEPTION_NOT_HANDLED
|
|
915
899
|
|
|
916
|
-
elif code == win32.RIP_EVENT and
|
|
917
|
-
event.get_rip_type() == win32.SLE_ERROR:
|
|
918
|
-
|
|
900
|
+
elif code == win32.RIP_EVENT and event.get_rip_type() == win32.SLE_ERROR:
|
|
919
901
|
# RIP events that signal fatal events should kill the process.
|
|
920
902
|
event.continueStatus = win32.DBG_TERMINATE_PROCESS
|
|
921
903
|
|
|
922
904
|
else:
|
|
923
|
-
|
|
924
905
|
# Other events need this continue code.
|
|
925
906
|
# Sometimes other codes can be used and are ignored, sometimes not.
|
|
926
907
|
# For example, when using the DBG_EXCEPTION_NOT_HANDLED code,
|
|
@@ -930,7 +911,7 @@ class Debug (EventDispatcher, _BreakpointContainer):
|
|
|
930
911
|
# Dispatch the debug event.
|
|
931
912
|
return EventDispatcher.dispatch(self, event)
|
|
932
913
|
|
|
933
|
-
def cont(self, event
|
|
914
|
+
def cont(self, event=None):
|
|
934
915
|
"""
|
|
935
916
|
Resumes execution after processing a debug event.
|
|
936
917
|
|
|
@@ -951,13 +932,12 @@ class Debug (EventDispatcher, _BreakpointContainer):
|
|
|
951
932
|
return
|
|
952
933
|
|
|
953
934
|
# Get the event continue status information.
|
|
954
|
-
dwProcessId
|
|
955
|
-
dwThreadId
|
|
935
|
+
dwProcessId = event.get_pid()
|
|
936
|
+
dwThreadId = event.get_tid()
|
|
956
937
|
dwContinueStatus = event.continueStatus
|
|
957
938
|
|
|
958
939
|
# Check if the process is still being debugged.
|
|
959
940
|
if self.is_debugee(dwProcessId):
|
|
960
|
-
|
|
961
941
|
# Try to flush the instruction cache.
|
|
962
942
|
try:
|
|
963
943
|
if self.system.has_process(dwProcessId):
|
|
@@ -986,7 +966,7 @@ class Debug (EventDispatcher, _BreakpointContainer):
|
|
|
986
966
|
if event == self.lastEvent:
|
|
987
967
|
self.lastEvent = None
|
|
988
968
|
|
|
989
|
-
def stop(self, bIgnoreExceptions
|
|
969
|
+
def stop(self, bIgnoreExceptions=True):
|
|
990
970
|
"""
|
|
991
971
|
Stops debugging all processes.
|
|
992
972
|
|
|
@@ -1016,7 +996,6 @@ class Debug (EventDispatcher, _BreakpointContainer):
|
|
|
1016
996
|
|
|
1017
997
|
# If we do...
|
|
1018
998
|
if has_event:
|
|
1019
|
-
|
|
1020
999
|
# Disable all breakpoints in the process before resuming execution.
|
|
1021
1000
|
try:
|
|
1022
1001
|
pid = event.get_pid()
|
|
@@ -1156,8 +1135,7 @@ class Debug (EventDispatcher, _BreakpointContainer):
|
|
|
1156
1135
|
@return: C{True} if the given process is being debugged
|
|
1157
1136
|
by this L{Debug} instance.
|
|
1158
1137
|
"""
|
|
1159
|
-
return self.is_debugee_attached(dwProcessId) or
|
|
1160
|
-
self.is_debugee_started(dwProcessId)
|
|
1138
|
+
return self.is_debugee_attached(dwProcessId) or self.is_debugee_started(dwProcessId)
|
|
1161
1139
|
|
|
1162
1140
|
def is_debugee_started(self, dwProcessId):
|
|
1163
1141
|
"""
|
|
@@ -1199,9 +1177,9 @@ class Debug (EventDispatcher, _BreakpointContainer):
|
|
|
1199
1177
|
"""
|
|
1200
1178
|
return self.__bHostileCode
|
|
1201
1179
|
|
|
1202
|
-
|
|
1180
|
+
# ------------------------------------------------------------------------------
|
|
1203
1181
|
|
|
1204
|
-
def interactive(self, bConfirmQuit
|
|
1182
|
+
def interactive(self, bConfirmQuit=True, bShowBanner=True):
|
|
1205
1183
|
"""
|
|
1206
1184
|
Start an interactive debugging session.
|
|
1207
1185
|
|
|
@@ -1217,14 +1195,14 @@ class Debug (EventDispatcher, _BreakpointContainer):
|
|
|
1217
1195
|
|
|
1218
1196
|
This method returns when the user closes the session.
|
|
1219
1197
|
"""
|
|
1220
|
-
print(
|
|
1198
|
+
print("")
|
|
1221
1199
|
print("-" * 79)
|
|
1222
1200
|
print("Interactive debugging session started.")
|
|
1223
|
-
print(
|
|
1224
|
-
print(
|
|
1201
|
+
print('Use the "help" command to list all available commands.')
|
|
1202
|
+
print('Use the "quit" command to close this session.')
|
|
1225
1203
|
print("-" * 79)
|
|
1226
1204
|
if self.lastEvent is None:
|
|
1227
|
-
print(
|
|
1205
|
+
print("")
|
|
1228
1206
|
console = ConsoleDebugger()
|
|
1229
1207
|
console.confirm_quit = bConfirmQuit
|
|
1230
1208
|
console.load_history()
|
|
@@ -1234,16 +1212,16 @@ class Debug (EventDispatcher, _BreakpointContainer):
|
|
|
1234
1212
|
finally:
|
|
1235
1213
|
console.stop_using_debugger()
|
|
1236
1214
|
console.save_history()
|
|
1237
|
-
print(
|
|
1215
|
+
print("")
|
|
1238
1216
|
print("-" * 79)
|
|
1239
1217
|
print("Interactive debugging session closed.")
|
|
1240
1218
|
print("-" * 79)
|
|
1241
|
-
print(
|
|
1219
|
+
print("")
|
|
1242
1220
|
|
|
1243
|
-
|
|
1221
|
+
# ------------------------------------------------------------------------------
|
|
1244
1222
|
|
|
1245
1223
|
@staticmethod
|
|
1246
|
-
def force_garbage_collection(bIgnoreExceptions
|
|
1224
|
+
def force_garbage_collection(bIgnoreExceptions=True):
|
|
1247
1225
|
"""
|
|
1248
1226
|
Close all Win32 handles the Python garbage collector failed to close.
|
|
1249
1227
|
|
|
@@ -1253,6 +1231,7 @@ class Debug (EventDispatcher, _BreakpointContainer):
|
|
|
1253
1231
|
"""
|
|
1254
1232
|
try:
|
|
1255
1233
|
import gc
|
|
1234
|
+
|
|
1256
1235
|
gc.collect()
|
|
1257
1236
|
bRecollect = False
|
|
1258
1237
|
for obj in list(gc.garbage):
|
|
@@ -1288,7 +1267,7 @@ class Debug (EventDispatcher, _BreakpointContainer):
|
|
|
1288
1267
|
e = sys.exc_info()[1]
|
|
1289
1268
|
warnings.warn(str(e), RuntimeWarning)
|
|
1290
1269
|
|
|
1291
|
-
|
|
1270
|
+
# ------------------------------------------------------------------------------
|
|
1292
1271
|
|
|
1293
1272
|
def _notify_create_process(self, event):
|
|
1294
1273
|
"""
|
|
@@ -1333,15 +1312,13 @@ class Debug (EventDispatcher, _BreakpointContainer):
|
|
|
1333
1312
|
aProcess = event.get_process()
|
|
1334
1313
|
try:
|
|
1335
1314
|
hProcess = aProcess.get_handle(win32.PROCESS_QUERY_INFORMATION)
|
|
1336
|
-
pbi = win32.NtQueryInformationProcess(
|
|
1337
|
-
hProcess, win32.ProcessBasicInformation)
|
|
1315
|
+
pbi = win32.NtQueryInformationProcess(hProcess, win32.ProcessBasicInformation)
|
|
1338
1316
|
ptr = pbi.PebBaseAddress + 2
|
|
1339
|
-
if aProcess.peek(ptr, 1) ==
|
|
1340
|
-
aProcess.poke(ptr,
|
|
1317
|
+
if aProcess.peek(ptr, 1) == "\x01":
|
|
1318
|
+
aProcess.poke(ptr, "\x00")
|
|
1341
1319
|
except WindowsError:
|
|
1342
1320
|
e = sys.exc_info()[1]
|
|
1343
|
-
warnings.warn(
|
|
1344
|
-
"Cannot patch PEB->BeingDebugged, reason: %s" % e.strerror)
|
|
1321
|
+
warnings.warn("Cannot patch PEB->BeingDebugged, reason: %s" % e.strerror)
|
|
1345
1322
|
|
|
1346
1323
|
return retval
|
|
1347
1324
|
|
|
@@ -1384,8 +1361,7 @@ class Debug (EventDispatcher, _BreakpointContainer):
|
|
|
1384
1361
|
# Anti-anti-debugging tricks on ntdll.dll.
|
|
1385
1362
|
if self.__bHostileCode:
|
|
1386
1363
|
aModule = event.get_module()
|
|
1387
|
-
if aModule.match_name(
|
|
1388
|
-
|
|
1364
|
+
if aModule.match_name("ntdll.dll"):
|
|
1389
1365
|
# Since we've overwritten the PEB to hide
|
|
1390
1366
|
# ourselves, we no longer have the system
|
|
1391
1367
|
# breakpoint when attaching to the process.
|
|
@@ -1395,8 +1371,7 @@ class Debug (EventDispatcher, _BreakpointContainer):
|
|
|
1395
1371
|
# a simple anti-debugging trick: the hostile
|
|
1396
1372
|
# process could have overwritten the int3
|
|
1397
1373
|
# instruction at the system breakpoint.
|
|
1398
|
-
self.break_at(aProcess.get_pid(),
|
|
1399
|
-
aProcess.resolve_label('ntdll!DbgUiRemoteBreakin'))
|
|
1374
|
+
self.break_at(aProcess.get_pid(), aProcess.resolve_label("ntdll!DbgUiRemoteBreakin"))
|
|
1400
1375
|
|
|
1401
1376
|
return bCallHandler
|
|
1402
1377
|
|
|
@@ -1416,18 +1391,14 @@ class Debug (EventDispatcher, _BreakpointContainer):
|
|
|
1416
1391
|
bCallHandler2 = self.system._notify_exit_process(event)
|
|
1417
1392
|
|
|
1418
1393
|
try:
|
|
1419
|
-
self.detach(
|
|
1394
|
+
self.detach(event.get_pid())
|
|
1420
1395
|
except WindowsError:
|
|
1421
1396
|
e = sys.exc_info()[1]
|
|
1422
1397
|
if e.winerror != win32.ERROR_INVALID_PARAMETER:
|
|
1423
|
-
warnings.warn(
|
|
1424
|
-
"Failed to detach from dead process, reason: %s" % str(e),
|
|
1425
|
-
RuntimeWarning)
|
|
1398
|
+
warnings.warn("Failed to detach from dead process, reason: %s" % str(e), RuntimeWarning)
|
|
1426
1399
|
except Exception:
|
|
1427
1400
|
e = sys.exc_info()[1]
|
|
1428
|
-
warnings.warn(
|
|
1429
|
-
"Failed to detach from dead process, reason: %s" % str(e),
|
|
1430
|
-
RuntimeWarning)
|
|
1401
|
+
warnings.warn("Failed to detach from dead process, reason: %s" % str(e), RuntimeWarning)
|
|
1431
1402
|
|
|
1432
1403
|
return bCallHandler1 and bCallHandler2
|
|
1433
1404
|
|
|
@@ -1475,7 +1446,7 @@ class Debug (EventDispatcher, _BreakpointContainer):
|
|
|
1475
1446
|
@rtype: bool
|
|
1476
1447
|
@return: C{True} to call the user-defined handle, C{False} otherwise.
|
|
1477
1448
|
"""
|
|
1478
|
-
event.debug.detach(
|
|
1449
|
+
event.debug.detach(event.get_pid())
|
|
1479
1450
|
return True
|
|
1480
1451
|
|
|
1481
1452
|
def _notify_debug_control_c(self, event):
|
|
@@ -1519,14 +1490,13 @@ class Debug (EventDispatcher, _BreakpointContainer):
|
|
|
1519
1490
|
"""
|
|
1520
1491
|
dwType = event.get_exception_information(0)
|
|
1521
1492
|
if dwType == 0x1000:
|
|
1522
|
-
pszName
|
|
1523
|
-
dwThreadId
|
|
1524
|
-
dwFlags
|
|
1493
|
+
pszName = event.get_exception_information(1)
|
|
1494
|
+
dwThreadId = event.get_exception_information(2)
|
|
1495
|
+
dwFlags = event.get_exception_information(3)
|
|
1525
1496
|
|
|
1526
1497
|
aProcess = event.get_process()
|
|
1527
|
-
szName
|
|
1498
|
+
szName = aProcess.peek_string(pszName, fUnicode=False)
|
|
1528
1499
|
if szName:
|
|
1529
|
-
|
|
1530
1500
|
if dwThreadId == -1:
|
|
1531
1501
|
dwThreadId = event.get_tid()
|
|
1532
1502
|
|
|
@@ -1536,8 +1506,8 @@ class Debug (EventDispatcher, _BreakpointContainer):
|
|
|
1536
1506
|
aThread = Thread(dwThreadId)
|
|
1537
1507
|
aProcess._add_thread(aThread)
|
|
1538
1508
|
|
|
1539
|
-
## if aThread.get_name() is None:
|
|
1540
|
-
## aThread.set_name(szName)
|
|
1509
|
+
## if aThread.get_name() is None:
|
|
1510
|
+
## aThread.set_name(szName)
|
|
1541
1511
|
aThread.set_name(szName)
|
|
1542
1512
|
|
|
1543
1513
|
return True
|