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
|
@@ -41,36 +41,27 @@ from winappdbg.win32.kernel32 import *
|
|
|
41
41
|
# DbgHelp versions and features list:
|
|
42
42
|
# http://msdn.microsoft.com/en-us/library/windows/desktop/ms679294(v=vs.85).aspx
|
|
43
43
|
|
|
44
|
-
|
|
44
|
+
# ------------------------------------------------------------------------------
|
|
45
45
|
# Tries to load the newest version of dbghelp.dll if available.
|
|
46
46
|
|
|
47
|
-
def _load_latest_dbghelp_dll():
|
|
48
47
|
|
|
48
|
+
def _load_latest_dbghelp_dll():
|
|
49
49
|
from os import getenv
|
|
50
50
|
from os.path import join, exists
|
|
51
51
|
|
|
52
52
|
program_files_location = getenv("ProgramFiles")
|
|
53
53
|
if not program_files_location:
|
|
54
54
|
program_files_location = "C:\\Program Files"
|
|
55
|
-
|
|
55
|
+
|
|
56
56
|
program_files_x86_location = getenv("ProgramFiles(x86)")
|
|
57
|
-
|
|
57
|
+
|
|
58
58
|
if arch == ARCH_AMD64:
|
|
59
59
|
if wow64:
|
|
60
|
-
pathname = join(
|
|
61
|
-
program_files_x86_location or program_files_location,
|
|
62
|
-
"Debugging Tools for Windows (x86)",
|
|
63
|
-
"dbghelp.dll")
|
|
60
|
+
pathname = join(program_files_x86_location or program_files_location, "Debugging Tools for Windows (x86)", "dbghelp.dll")
|
|
64
61
|
else:
|
|
65
|
-
pathname = join(
|
|
66
|
-
program_files_location,
|
|
67
|
-
"Debugging Tools for Windows (x64)",
|
|
68
|
-
"dbghelp.dll")
|
|
62
|
+
pathname = join(program_files_location, "Debugging Tools for Windows (x64)", "dbghelp.dll")
|
|
69
63
|
elif arch == ARCH_I386:
|
|
70
|
-
pathname = join(
|
|
71
|
-
program_files_location,
|
|
72
|
-
"Debugging Tools for Windows (x86)",
|
|
73
|
-
"dbghelp.dll")
|
|
64
|
+
pathname = join(program_files_location, "Debugging Tools for Windows (x86)", "dbghelp.dll")
|
|
74
65
|
else:
|
|
75
66
|
pathname = None
|
|
76
67
|
|
|
@@ -81,71 +72,72 @@ def _load_latest_dbghelp_dll():
|
|
|
81
72
|
except Exception:
|
|
82
73
|
pass
|
|
83
74
|
|
|
75
|
+
|
|
84
76
|
_load_latest_dbghelp_dll()
|
|
85
77
|
|
|
86
78
|
# Recover the old binding of the "os" symbol.
|
|
87
79
|
# XXX FIXME not sure if I really need to do this!
|
|
88
80
|
##from version import os
|
|
89
81
|
|
|
90
|
-
|
|
82
|
+
# ------------------------------------------------------------------------------
|
|
91
83
|
|
|
92
|
-
|
|
84
|
+
# ==============================================================================
|
|
93
85
|
# This is used later on to calculate the list of exported symbols.
|
|
94
86
|
_all = None
|
|
95
87
|
_all = set(vars().keys())
|
|
96
|
-
|
|
88
|
+
# ==============================================================================
|
|
97
89
|
|
|
98
90
|
# SymGetHomeDirectory "type" values
|
|
99
91
|
hdBase = 0
|
|
100
|
-
hdSym
|
|
101
|
-
hdSrc
|
|
102
|
-
|
|
103
|
-
UNDNAME_32_BIT_DECODE
|
|
104
|
-
UNDNAME_COMPLETE
|
|
105
|
-
UNDNAME_NAME_ONLY
|
|
106
|
-
UNDNAME_NO_ACCESS_SPECIFIERS
|
|
107
|
-
UNDNAME_NO_ALLOCATION_LANGUAGE
|
|
108
|
-
UNDNAME_NO_ALLOCATION_MODEL
|
|
109
|
-
UNDNAME_NO_ARGUMENTS
|
|
110
|
-
UNDNAME_NO_CV_THISTYPE
|
|
111
|
-
UNDNAME_NO_FUNCTION_RETURNS
|
|
112
|
-
UNDNAME_NO_LEADING_UNDERSCORES
|
|
113
|
-
UNDNAME_NO_MEMBER_TYPE
|
|
114
|
-
UNDNAME_NO_MS_KEYWORDS
|
|
115
|
-
UNDNAME_NO_MS_THISTYPE
|
|
116
|
-
UNDNAME_NO_RETURN_UDT_MODEL
|
|
117
|
-
UNDNAME_NO_SPECIAL_SYMS
|
|
118
|
-
UNDNAME_NO_THISTYPE
|
|
119
|
-
UNDNAME_NO_THROW_SIGNATURES
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
SYMOPT_ALLOW_ABSOLUTE_SYMBOLS
|
|
124
|
-
SYMOPT_ALLOW_ZERO_ADDRESS
|
|
125
|
-
SYMOPT_AUTO_PUBLICS
|
|
126
|
-
SYMOPT_CASE_INSENSITIVE
|
|
127
|
-
SYMOPT_DEBUG
|
|
128
|
-
SYMOPT_DEFERRED_LOADS
|
|
129
|
-
SYMOPT_DISABLE_SYMSRV_AUTODETECT
|
|
130
|
-
SYMOPT_EXACT_SYMBOLS
|
|
131
|
-
SYMOPT_FAIL_CRITICAL_ERRORS
|
|
132
|
-
SYMOPT_FAVOR_COMPRESSED
|
|
133
|
-
SYMOPT_FLAT_DIRECTORY
|
|
134
|
-
SYMOPT_IGNORE_CVREC
|
|
135
|
-
SYMOPT_IGNORE_IMAGEDIR
|
|
136
|
-
SYMOPT_IGNORE_NT_SYMPATH
|
|
137
|
-
SYMOPT_INCLUDE_32BIT_MODULES
|
|
138
|
-
SYMOPT_LOAD_ANYTHING
|
|
139
|
-
SYMOPT_LOAD_LINES
|
|
140
|
-
SYMOPT_NO_CPP
|
|
141
|
-
SYMOPT_NO_IMAGE_SEARCH
|
|
142
|
-
SYMOPT_NO_PROMPTS
|
|
143
|
-
SYMOPT_NO_PUBLICS
|
|
144
|
-
SYMOPT_NO_UNQUALIFIED_LOADS
|
|
145
|
-
SYMOPT_OVERWRITE
|
|
146
|
-
SYMOPT_PUBLICS_ONLY
|
|
147
|
-
SYMOPT_SECURE
|
|
148
|
-
SYMOPT_UNDNAME
|
|
92
|
+
hdSym = 1
|
|
93
|
+
hdSrc = 2
|
|
94
|
+
|
|
95
|
+
UNDNAME_32_BIT_DECODE = 0x0800
|
|
96
|
+
UNDNAME_COMPLETE = 0x0000
|
|
97
|
+
UNDNAME_NAME_ONLY = 0x1000
|
|
98
|
+
UNDNAME_NO_ACCESS_SPECIFIERS = 0x0080
|
|
99
|
+
UNDNAME_NO_ALLOCATION_LANGUAGE = 0x0010
|
|
100
|
+
UNDNAME_NO_ALLOCATION_MODEL = 0x0008
|
|
101
|
+
UNDNAME_NO_ARGUMENTS = 0x2000
|
|
102
|
+
UNDNAME_NO_CV_THISTYPE = 0x0040
|
|
103
|
+
UNDNAME_NO_FUNCTION_RETURNS = 0x0004
|
|
104
|
+
UNDNAME_NO_LEADING_UNDERSCORES = 0x0001
|
|
105
|
+
UNDNAME_NO_MEMBER_TYPE = 0x0200
|
|
106
|
+
UNDNAME_NO_MS_KEYWORDS = 0x0002
|
|
107
|
+
UNDNAME_NO_MS_THISTYPE = 0x0020
|
|
108
|
+
UNDNAME_NO_RETURN_UDT_MODEL = 0x0400
|
|
109
|
+
UNDNAME_NO_SPECIAL_SYMS = 0x4000
|
|
110
|
+
UNDNAME_NO_THISTYPE = 0x0060
|
|
111
|
+
UNDNAME_NO_THROW_SIGNATURES = 0x0100
|
|
112
|
+
|
|
113
|
+
# --- IMAGEHLP_MODULE structure and related ------------------------------------
|
|
114
|
+
|
|
115
|
+
SYMOPT_ALLOW_ABSOLUTE_SYMBOLS = 0x00000800
|
|
116
|
+
SYMOPT_ALLOW_ZERO_ADDRESS = 0x01000000
|
|
117
|
+
SYMOPT_AUTO_PUBLICS = 0x00010000
|
|
118
|
+
SYMOPT_CASE_INSENSITIVE = 0x00000001
|
|
119
|
+
SYMOPT_DEBUG = 0x80000000
|
|
120
|
+
SYMOPT_DEFERRED_LOADS = 0x00000004
|
|
121
|
+
SYMOPT_DISABLE_SYMSRV_AUTODETECT = 0x02000000
|
|
122
|
+
SYMOPT_EXACT_SYMBOLS = 0x00000400
|
|
123
|
+
SYMOPT_FAIL_CRITICAL_ERRORS = 0x00000200
|
|
124
|
+
SYMOPT_FAVOR_COMPRESSED = 0x00800000
|
|
125
|
+
SYMOPT_FLAT_DIRECTORY = 0x00400000
|
|
126
|
+
SYMOPT_IGNORE_CVREC = 0x00000080
|
|
127
|
+
SYMOPT_IGNORE_IMAGEDIR = 0x00200000
|
|
128
|
+
SYMOPT_IGNORE_NT_SYMPATH = 0x00001000
|
|
129
|
+
SYMOPT_INCLUDE_32BIT_MODULES = 0x00002000
|
|
130
|
+
SYMOPT_LOAD_ANYTHING = 0x00000040
|
|
131
|
+
SYMOPT_LOAD_LINES = 0x00000010
|
|
132
|
+
SYMOPT_NO_CPP = 0x00000008
|
|
133
|
+
SYMOPT_NO_IMAGE_SEARCH = 0x00020000
|
|
134
|
+
SYMOPT_NO_PROMPTS = 0x00080000
|
|
135
|
+
SYMOPT_NO_PUBLICS = 0x00008000
|
|
136
|
+
SYMOPT_NO_UNQUALIFIED_LOADS = 0x00000100
|
|
137
|
+
SYMOPT_OVERWRITE = 0x00100000
|
|
138
|
+
SYMOPT_PUBLICS_ONLY = 0x00004000
|
|
139
|
+
SYMOPT_SECURE = 0x00040000
|
|
140
|
+
SYMOPT_UNDNAME = 0x00000002
|
|
149
141
|
|
|
150
142
|
##SSRVOPT_DWORD
|
|
151
143
|
##SSRVOPT_DWORDPTR
|
|
@@ -179,15 +171,15 @@ SYMOPT_UNDNAME = 0x00000002
|
|
|
179
171
|
# SymVirtual,
|
|
180
172
|
# NumSymTypes
|
|
181
173
|
# } SYM_TYPE;
|
|
182
|
-
SymNone
|
|
183
|
-
SymCoff
|
|
184
|
-
SymCv
|
|
185
|
-
SymPdb
|
|
186
|
-
SymExport
|
|
174
|
+
SymNone = 0
|
|
175
|
+
SymCoff = 1
|
|
176
|
+
SymCv = 2
|
|
177
|
+
SymPdb = 3
|
|
178
|
+
SymExport = 4
|
|
187
179
|
SymDeferred = 5
|
|
188
|
-
SymSym
|
|
189
|
-
SymDia
|
|
190
|
-
SymVirtual
|
|
180
|
+
SymSym = 6
|
|
181
|
+
SymDia = 7
|
|
182
|
+
SymVirtual = 8
|
|
191
183
|
NumSymTypes = 9
|
|
192
184
|
|
|
193
185
|
# typedef struct _IMAGEHLP_MODULE64 {
|
|
@@ -216,173 +208,195 @@ NumSymTypes = 9
|
|
|
216
208
|
# BOOL Publics;
|
|
217
209
|
# } IMAGEHLP_MODULE64, *PIMAGEHLP_MODULE64;
|
|
218
210
|
|
|
219
|
-
|
|
211
|
+
|
|
212
|
+
class IMAGEHLP_MODULE(Structure):
|
|
220
213
|
_fields_ = [
|
|
221
|
-
("SizeOfStruct",
|
|
222
|
-
("BaseOfImage",
|
|
223
|
-
("ImageSize",
|
|
224
|
-
("TimeDateStamp",
|
|
225
|
-
("CheckSum",
|
|
226
|
-
("NumSyms",
|
|
227
|
-
("SymType",
|
|
228
|
-
("ModuleName",
|
|
229
|
-
("ImageName",
|
|
214
|
+
("SizeOfStruct", DWORD),
|
|
215
|
+
("BaseOfImage", DWORD),
|
|
216
|
+
("ImageSize", DWORD),
|
|
217
|
+
("TimeDateStamp", DWORD),
|
|
218
|
+
("CheckSum", DWORD),
|
|
219
|
+
("NumSyms", DWORD),
|
|
220
|
+
("SymType", DWORD), # SYM_TYPE
|
|
221
|
+
("ModuleName", CHAR * 32),
|
|
222
|
+
("ImageName", CHAR * 256),
|
|
230
223
|
("LoadedImageName", CHAR * 256),
|
|
231
224
|
]
|
|
225
|
+
|
|
226
|
+
|
|
232
227
|
PIMAGEHLP_MODULE = POINTER(IMAGEHLP_MODULE)
|
|
233
228
|
|
|
234
|
-
|
|
229
|
+
|
|
230
|
+
class IMAGEHLP_MODULE64(Structure):
|
|
235
231
|
_fields_ = [
|
|
236
|
-
("SizeOfStruct",
|
|
237
|
-
("BaseOfImage",
|
|
238
|
-
("ImageSize",
|
|
239
|
-
("TimeDateStamp",
|
|
240
|
-
("CheckSum",
|
|
241
|
-
("NumSyms",
|
|
242
|
-
("SymType",
|
|
243
|
-
("ModuleName",
|
|
244
|
-
("ImageName",
|
|
232
|
+
("SizeOfStruct", DWORD),
|
|
233
|
+
("BaseOfImage", DWORD64),
|
|
234
|
+
("ImageSize", DWORD),
|
|
235
|
+
("TimeDateStamp", DWORD),
|
|
236
|
+
("CheckSum", DWORD),
|
|
237
|
+
("NumSyms", DWORD),
|
|
238
|
+
("SymType", DWORD), # SYM_TYPE
|
|
239
|
+
("ModuleName", CHAR * 32),
|
|
240
|
+
("ImageName", CHAR * 256),
|
|
245
241
|
("LoadedImageName", CHAR * 256),
|
|
246
|
-
("LoadedPdbName",
|
|
247
|
-
("CVSig",
|
|
248
|
-
("CVData",
|
|
249
|
-
("PdbSig",
|
|
250
|
-
("PdbSig70",
|
|
251
|
-
("PdbAge",
|
|
252
|
-
("PdbUnmatched",
|
|
253
|
-
("DbgUnmatched",
|
|
254
|
-
("LineNumbers",
|
|
255
|
-
("GlobalSymbols",
|
|
256
|
-
("TypeInfo",
|
|
257
|
-
("SourceIndexed",
|
|
258
|
-
("Publics",
|
|
242
|
+
("LoadedPdbName", CHAR * 256),
|
|
243
|
+
("CVSig", DWORD),
|
|
244
|
+
("CVData", CHAR * (MAX_PATH * 3)),
|
|
245
|
+
("PdbSig", DWORD),
|
|
246
|
+
("PdbSig70", GUID),
|
|
247
|
+
("PdbAge", DWORD),
|
|
248
|
+
("PdbUnmatched", BOOL),
|
|
249
|
+
("DbgUnmatched", BOOL),
|
|
250
|
+
("LineNumbers", BOOL),
|
|
251
|
+
("GlobalSymbols", BOOL),
|
|
252
|
+
("TypeInfo", BOOL),
|
|
253
|
+
("SourceIndexed", BOOL),
|
|
254
|
+
("Publics", BOOL),
|
|
259
255
|
]
|
|
256
|
+
|
|
257
|
+
|
|
260
258
|
PIMAGEHLP_MODULE64 = POINTER(IMAGEHLP_MODULE64)
|
|
261
259
|
|
|
262
|
-
|
|
260
|
+
|
|
261
|
+
class IMAGEHLP_MODULEW(Structure):
|
|
263
262
|
_fields_ = [
|
|
264
|
-
("SizeOfStruct",
|
|
265
|
-
("BaseOfImage",
|
|
266
|
-
("ImageSize",
|
|
267
|
-
("TimeDateStamp",
|
|
268
|
-
("CheckSum",
|
|
269
|
-
("NumSyms",
|
|
270
|
-
("SymType",
|
|
271
|
-
("ModuleName",
|
|
272
|
-
("ImageName",
|
|
263
|
+
("SizeOfStruct", DWORD),
|
|
264
|
+
("BaseOfImage", DWORD),
|
|
265
|
+
("ImageSize", DWORD),
|
|
266
|
+
("TimeDateStamp", DWORD),
|
|
267
|
+
("CheckSum", DWORD),
|
|
268
|
+
("NumSyms", DWORD),
|
|
269
|
+
("SymType", DWORD), # SYM_TYPE
|
|
270
|
+
("ModuleName", WCHAR * 32),
|
|
271
|
+
("ImageName", WCHAR * 256),
|
|
273
272
|
("LoadedImageName", WCHAR * 256),
|
|
274
273
|
]
|
|
274
|
+
|
|
275
|
+
|
|
275
276
|
PIMAGEHLP_MODULEW = POINTER(IMAGEHLP_MODULEW)
|
|
276
277
|
|
|
277
|
-
|
|
278
|
+
|
|
279
|
+
class IMAGEHLP_MODULEW64(Structure):
|
|
278
280
|
_fields_ = [
|
|
279
|
-
("SizeOfStruct",
|
|
280
|
-
("BaseOfImage",
|
|
281
|
-
("ImageSize",
|
|
282
|
-
("TimeDateStamp",
|
|
283
|
-
("CheckSum",
|
|
284
|
-
("NumSyms",
|
|
285
|
-
("SymType",
|
|
286
|
-
("ModuleName",
|
|
287
|
-
("ImageName",
|
|
281
|
+
("SizeOfStruct", DWORD),
|
|
282
|
+
("BaseOfImage", DWORD64),
|
|
283
|
+
("ImageSize", DWORD),
|
|
284
|
+
("TimeDateStamp", DWORD),
|
|
285
|
+
("CheckSum", DWORD),
|
|
286
|
+
("NumSyms", DWORD),
|
|
287
|
+
("SymType", DWORD), # SYM_TYPE
|
|
288
|
+
("ModuleName", WCHAR * 32),
|
|
289
|
+
("ImageName", WCHAR * 256),
|
|
288
290
|
("LoadedImageName", WCHAR * 256),
|
|
289
|
-
("LoadedPdbName",
|
|
290
|
-
("CVSig",
|
|
291
|
-
("CVData",
|
|
292
|
-
("PdbSig",
|
|
293
|
-
("PdbSig70",
|
|
294
|
-
("PdbAge",
|
|
295
|
-
("PdbUnmatched",
|
|
296
|
-
("DbgUnmatched",
|
|
297
|
-
("LineNumbers",
|
|
298
|
-
("GlobalSymbols",
|
|
299
|
-
("TypeInfo",
|
|
300
|
-
("SourceIndexed",
|
|
301
|
-
("Publics",
|
|
291
|
+
("LoadedPdbName", WCHAR * 256),
|
|
292
|
+
("CVSig", DWORD),
|
|
293
|
+
("CVData", WCHAR * (MAX_PATH * 3)),
|
|
294
|
+
("PdbSig", DWORD),
|
|
295
|
+
("PdbSig70", GUID),
|
|
296
|
+
("PdbAge", DWORD),
|
|
297
|
+
("PdbUnmatched", BOOL),
|
|
298
|
+
("DbgUnmatched", BOOL),
|
|
299
|
+
("LineNumbers", BOOL),
|
|
300
|
+
("GlobalSymbols", BOOL),
|
|
301
|
+
("TypeInfo", BOOL),
|
|
302
|
+
("SourceIndexed", BOOL),
|
|
303
|
+
("Publics", BOOL),
|
|
302
304
|
]
|
|
305
|
+
|
|
306
|
+
|
|
303
307
|
PIMAGEHLP_MODULEW64 = POINTER(IMAGEHLP_MODULEW64)
|
|
304
308
|
|
|
305
|
-
|
|
309
|
+
# --- dbghelp.dll --------------------------------------------------------------
|
|
306
310
|
|
|
307
311
|
# XXX the ANSI versions of these functions don't end in "A" as expected!
|
|
308
312
|
|
|
313
|
+
|
|
309
314
|
# BOOL WINAPI MakeSureDirectoryPathExists(
|
|
310
315
|
# _In_ PCSTR DirPath
|
|
311
316
|
# );
|
|
312
317
|
def MakeSureDirectoryPathExistsA(DirPath):
|
|
313
318
|
_MakeSureDirectoryPathExists = windll.dbghelp.MakeSureDirectoryPathExists
|
|
314
319
|
_MakeSureDirectoryPathExists.argtypes = [LPSTR]
|
|
315
|
-
_MakeSureDirectoryPathExists.restype
|
|
320
|
+
_MakeSureDirectoryPathExists.restype = bool
|
|
316
321
|
_MakeSureDirectoryPathExists.errcheck = RaiseIfZero
|
|
317
322
|
return _MakeSureDirectoryPathExists(DirPath)
|
|
318
323
|
|
|
324
|
+
|
|
319
325
|
MakeSureDirectoryPathExistsW = MakeWideVersion(MakeSureDirectoryPathExistsA)
|
|
320
326
|
MakeSureDirectoryPathExists = GuessStringType(MakeSureDirectoryPathExistsA, MakeSureDirectoryPathExistsW)
|
|
321
327
|
|
|
328
|
+
|
|
322
329
|
# BOOL WINAPI SymInitialize(
|
|
323
330
|
# __in HANDLE hProcess,
|
|
324
331
|
# __in_opt PCTSTR UserSearchPath,
|
|
325
332
|
# __in BOOL fInvadeProcess
|
|
326
333
|
# );
|
|
327
|
-
def SymInitializeA(hProcess, UserSearchPath
|
|
334
|
+
def SymInitializeA(hProcess, UserSearchPath=None, fInvadeProcess=False):
|
|
328
335
|
_SymInitialize = windll.dbghelp.SymInitialize
|
|
329
336
|
_SymInitialize.argtypes = [HANDLE, LPSTR, BOOL]
|
|
330
|
-
_SymInitialize.restype
|
|
337
|
+
_SymInitialize.restype = bool
|
|
331
338
|
_SymInitialize.errcheck = RaiseIfZero
|
|
332
339
|
if not UserSearchPath:
|
|
333
340
|
UserSearchPath = None
|
|
334
341
|
_SymInitialize(hProcess, UserSearchPath, fInvadeProcess)
|
|
335
342
|
|
|
343
|
+
|
|
336
344
|
SymInitializeW = MakeWideVersion(SymInitializeA)
|
|
337
345
|
SymInitialize = GuessStringType(SymInitializeA, SymInitializeW)
|
|
338
346
|
|
|
347
|
+
|
|
339
348
|
# BOOL WINAPI SymCleanup(
|
|
340
349
|
# __in HANDLE hProcess
|
|
341
350
|
# );
|
|
342
351
|
def SymCleanup(hProcess):
|
|
343
352
|
_SymCleanup = windll.dbghelp.SymCleanup
|
|
344
353
|
_SymCleanup.argtypes = [HANDLE]
|
|
345
|
-
_SymCleanup.restype
|
|
354
|
+
_SymCleanup.restype = bool
|
|
346
355
|
_SymCleanup.errcheck = RaiseIfZero
|
|
347
356
|
_SymCleanup(hProcess)
|
|
348
357
|
|
|
358
|
+
|
|
349
359
|
# BOOL WINAPI SymRefreshModuleList(
|
|
350
360
|
# __in HANDLE hProcess
|
|
351
361
|
# );
|
|
352
362
|
def SymRefreshModuleList(hProcess):
|
|
353
363
|
_SymRefreshModuleList = windll.dbghelp.SymRefreshModuleList
|
|
354
364
|
_SymRefreshModuleList.argtypes = [HANDLE]
|
|
355
|
-
_SymRefreshModuleList.restype
|
|
365
|
+
_SymRefreshModuleList.restype = bool
|
|
356
366
|
_SymRefreshModuleList.errcheck = RaiseIfZero
|
|
357
367
|
_SymRefreshModuleList(hProcess)
|
|
358
368
|
|
|
369
|
+
|
|
359
370
|
# BOOL WINAPI SymSetParentWindow(
|
|
360
371
|
# __in HWND hwnd
|
|
361
372
|
# );
|
|
362
373
|
def SymSetParentWindow(hwnd):
|
|
363
374
|
_SymSetParentWindow = windll.dbghelp.SymSetParentWindow
|
|
364
375
|
_SymSetParentWindow.argtypes = [HWND]
|
|
365
|
-
_SymSetParentWindow.restype
|
|
376
|
+
_SymSetParentWindow.restype = bool
|
|
366
377
|
_SymSetParentWindow.errcheck = RaiseIfZero
|
|
367
378
|
_SymSetParentWindow(hwnd)
|
|
368
379
|
|
|
380
|
+
|
|
369
381
|
# DWORD WINAPI SymSetOptions(
|
|
370
382
|
# __in DWORD SymOptions
|
|
371
383
|
# );
|
|
372
384
|
def SymSetOptions(SymOptions):
|
|
373
385
|
_SymSetOptions = windll.dbghelp.SymSetOptions
|
|
374
386
|
_SymSetOptions.argtypes = [DWORD]
|
|
375
|
-
_SymSetOptions.restype
|
|
387
|
+
_SymSetOptions.restype = DWORD
|
|
376
388
|
_SymSetOptions.errcheck = RaiseIfZero
|
|
377
389
|
_SymSetOptions(SymOptions)
|
|
378
390
|
|
|
391
|
+
|
|
379
392
|
# DWORD WINAPI SymGetOptions(void);
|
|
380
393
|
def SymGetOptions():
|
|
381
394
|
_SymGetOptions = windll.dbghelp.SymGetOptions
|
|
382
395
|
_SymGetOptions.argtypes = []
|
|
383
|
-
_SymGetOptions.restype
|
|
396
|
+
_SymGetOptions.restype = DWORD
|
|
384
397
|
return _SymGetOptions()
|
|
385
398
|
|
|
399
|
+
|
|
386
400
|
# DWORD WINAPI SymLoadModule(
|
|
387
401
|
# __in HANDLE hProcess,
|
|
388
402
|
# __in_opt HANDLE hFile,
|
|
@@ -391,10 +405,10 @@ def SymGetOptions():
|
|
|
391
405
|
# __in DWORD BaseOfDll,
|
|
392
406
|
# __in DWORD SizeOfDll
|
|
393
407
|
# );
|
|
394
|
-
def SymLoadModuleA(hProcess, hFile
|
|
408
|
+
def SymLoadModuleA(hProcess, hFile=None, ImageName=None, ModuleName=None, BaseOfDll=None, SizeOfDll=None):
|
|
395
409
|
_SymLoadModule = windll.dbghelp.SymLoadModule
|
|
396
410
|
_SymLoadModule.argtypes = [HANDLE, HANDLE, LPSTR, LPSTR, DWORD, DWORD]
|
|
397
|
-
_SymLoadModule.restype
|
|
411
|
+
_SymLoadModule.restype = DWORD
|
|
398
412
|
|
|
399
413
|
if not ImageName:
|
|
400
414
|
ImageName = None
|
|
@@ -412,9 +426,11 @@ def SymLoadModuleA(hProcess, hFile = None, ImageName = None, ModuleName = None,
|
|
|
412
426
|
raise ctypes.WinError(dwErrorCode)
|
|
413
427
|
return lpBaseAddress
|
|
414
428
|
|
|
429
|
+
|
|
415
430
|
SymLoadModuleW = MakeWideVersion(SymLoadModuleA)
|
|
416
431
|
SymLoadModule = GuessStringType(SymLoadModuleA, SymLoadModuleW)
|
|
417
432
|
|
|
433
|
+
|
|
418
434
|
# DWORD64 WINAPI SymLoadModule64(
|
|
419
435
|
# __in HANDLE hProcess,
|
|
420
436
|
# __in_opt HANDLE hFile,
|
|
@@ -423,10 +439,10 @@ SymLoadModule = GuessStringType(SymLoadModuleA, SymLoadModuleW)
|
|
|
423
439
|
# __in DWORD64 BaseOfDll,
|
|
424
440
|
# __in DWORD SizeOfDll
|
|
425
441
|
# );
|
|
426
|
-
def SymLoadModule64A(hProcess, hFile
|
|
442
|
+
def SymLoadModule64A(hProcess, hFile=None, ImageName=None, ModuleName=None, BaseOfDll=None, SizeOfDll=None):
|
|
427
443
|
_SymLoadModule64 = windll.dbghelp.SymLoadModule64
|
|
428
444
|
_SymLoadModule64.argtypes = [HANDLE, HANDLE, LPSTR, LPSTR, DWORD64, DWORD]
|
|
429
|
-
_SymLoadModule64.restype
|
|
445
|
+
_SymLoadModule64.restype = DWORD64
|
|
430
446
|
|
|
431
447
|
if not ImageName:
|
|
432
448
|
ImageName = None
|
|
@@ -444,9 +460,11 @@ def SymLoadModule64A(hProcess, hFile = None, ImageName = None, ModuleName = None
|
|
|
444
460
|
raise ctypes.WinError(dwErrorCode)
|
|
445
461
|
return lpBaseAddress
|
|
446
462
|
|
|
463
|
+
|
|
447
464
|
SymLoadModule64W = MakeWideVersion(SymLoadModule64A)
|
|
448
465
|
SymLoadModule64 = GuessStringType(SymLoadModule64A, SymLoadModule64W)
|
|
449
466
|
|
|
467
|
+
|
|
450
468
|
# BOOL WINAPI SymUnloadModule(
|
|
451
469
|
# __in HANDLE hProcess,
|
|
452
470
|
# __in DWORD BaseOfDll
|
|
@@ -454,10 +472,11 @@ SymLoadModule64 = GuessStringType(SymLoadModule64A, SymLoadModule64W)
|
|
|
454
472
|
def SymUnloadModule(hProcess, BaseOfDll):
|
|
455
473
|
_SymUnloadModule = windll.dbghelp.SymUnloadModule
|
|
456
474
|
_SymUnloadModule.argtypes = [HANDLE, DWORD]
|
|
457
|
-
_SymUnloadModule.restype
|
|
475
|
+
_SymUnloadModule.restype = bool
|
|
458
476
|
_SymUnloadModule.errcheck = RaiseIfZero
|
|
459
477
|
_SymUnloadModule(hProcess, BaseOfDll)
|
|
460
478
|
|
|
479
|
+
|
|
461
480
|
# BOOL WINAPI SymUnloadModule64(
|
|
462
481
|
# __in HANDLE hProcess,
|
|
463
482
|
# __in DWORD64 BaseOfDll
|
|
@@ -465,10 +484,11 @@ def SymUnloadModule(hProcess, BaseOfDll):
|
|
|
465
484
|
def SymUnloadModule64(hProcess, BaseOfDll):
|
|
466
485
|
_SymUnloadModule64 = windll.dbghelp.SymUnloadModule64
|
|
467
486
|
_SymUnloadModule64.argtypes = [HANDLE, DWORD64]
|
|
468
|
-
_SymUnloadModule64.restype
|
|
487
|
+
_SymUnloadModule64.restype = bool
|
|
469
488
|
_SymUnloadModule64.errcheck = RaiseIfZero
|
|
470
489
|
_SymUnloadModule64(hProcess, BaseOfDll)
|
|
471
490
|
|
|
491
|
+
|
|
472
492
|
# BOOL WINAPI SymGetModuleInfo(
|
|
473
493
|
# __in HANDLE hProcess,
|
|
474
494
|
# __in DWORD dwAddr,
|
|
@@ -477,7 +497,7 @@ def SymUnloadModule64(hProcess, BaseOfDll):
|
|
|
477
497
|
def SymGetModuleInfoA(hProcess, dwAddr):
|
|
478
498
|
_SymGetModuleInfo = windll.dbghelp.SymGetModuleInfo
|
|
479
499
|
_SymGetModuleInfo.argtypes = [HANDLE, DWORD, PIMAGEHLP_MODULE]
|
|
480
|
-
_SymGetModuleInfo.restype
|
|
500
|
+
_SymGetModuleInfo.restype = bool
|
|
481
501
|
_SymGetModuleInfo.errcheck = RaiseIfZero
|
|
482
502
|
|
|
483
503
|
ModuleInfo = IMAGEHLP_MODULE()
|
|
@@ -485,10 +505,11 @@ def SymGetModuleInfoA(hProcess, dwAddr):
|
|
|
485
505
|
_SymGetModuleInfo(hProcess, dwAddr, byref(ModuleInfo))
|
|
486
506
|
return ModuleInfo
|
|
487
507
|
|
|
508
|
+
|
|
488
509
|
def SymGetModuleInfoW(hProcess, dwAddr):
|
|
489
510
|
_SymGetModuleInfoW = windll.dbghelp.SymGetModuleInfoW
|
|
490
511
|
_SymGetModuleInfoW.argtypes = [HANDLE, DWORD, PIMAGEHLP_MODULEW]
|
|
491
|
-
_SymGetModuleInfoW.restype
|
|
512
|
+
_SymGetModuleInfoW.restype = bool
|
|
492
513
|
_SymGetModuleInfoW.errcheck = RaiseIfZero
|
|
493
514
|
|
|
494
515
|
ModuleInfo = IMAGEHLP_MODULEW()
|
|
@@ -496,8 +517,10 @@ def SymGetModuleInfoW(hProcess, dwAddr):
|
|
|
496
517
|
_SymGetModuleInfoW(hProcess, dwAddr, byref(ModuleInfo))
|
|
497
518
|
return ModuleInfo
|
|
498
519
|
|
|
520
|
+
|
|
499
521
|
SymGetModuleInfo = GuessStringType(SymGetModuleInfoA, SymGetModuleInfoW)
|
|
500
522
|
|
|
523
|
+
|
|
501
524
|
# BOOL WINAPI SymGetModuleInfo64(
|
|
502
525
|
# __in HANDLE hProcess,
|
|
503
526
|
# __in DWORD64 dwAddr,
|
|
@@ -506,7 +529,7 @@ SymGetModuleInfo = GuessStringType(SymGetModuleInfoA, SymGetModuleInfoW)
|
|
|
506
529
|
def SymGetModuleInfo64A(hProcess, dwAddr):
|
|
507
530
|
_SymGetModuleInfo64 = windll.dbghelp.SymGetModuleInfo64
|
|
508
531
|
_SymGetModuleInfo64.argtypes = [HANDLE, DWORD64, PIMAGEHLP_MODULE64]
|
|
509
|
-
_SymGetModuleInfo64.restype
|
|
532
|
+
_SymGetModuleInfo64.restype = bool
|
|
510
533
|
_SymGetModuleInfo64.errcheck = RaiseIfZero
|
|
511
534
|
|
|
512
535
|
ModuleInfo = IMAGEHLP_MODULE64()
|
|
@@ -514,10 +537,11 @@ def SymGetModuleInfo64A(hProcess, dwAddr):
|
|
|
514
537
|
_SymGetModuleInfo64(hProcess, dwAddr, byref(ModuleInfo))
|
|
515
538
|
return ModuleInfo
|
|
516
539
|
|
|
540
|
+
|
|
517
541
|
def SymGetModuleInfo64W(hProcess, dwAddr):
|
|
518
542
|
_SymGetModuleInfo64W = windll.dbghelp.SymGetModuleInfo64W
|
|
519
543
|
_SymGetModuleInfo64W.argtypes = [HANDLE, DWORD64, PIMAGEHLP_MODULE64W]
|
|
520
|
-
_SymGetModuleInfo64W.restype
|
|
544
|
+
_SymGetModuleInfo64W.restype = bool
|
|
521
545
|
_SymGetModuleInfo64W.errcheck = RaiseIfZero
|
|
522
546
|
|
|
523
547
|
ModuleInfo = IMAGEHLP_MODULE64W()
|
|
@@ -525,6 +549,7 @@ def SymGetModuleInfo64W(hProcess, dwAddr):
|
|
|
525
549
|
_SymGetModuleInfo64W(hProcess, dwAddr, byref(ModuleInfo))
|
|
526
550
|
return ModuleInfo
|
|
527
551
|
|
|
552
|
+
|
|
528
553
|
SymGetModuleInfo64 = GuessStringType(SymGetModuleInfo64A, SymGetModuleInfo64W)
|
|
529
554
|
|
|
530
555
|
# BOOL CALLBACK SymEnumerateModulesProc(
|
|
@@ -532,26 +557,27 @@ SymGetModuleInfo64 = GuessStringType(SymGetModuleInfo64A, SymGetModuleInfo64W)
|
|
|
532
557
|
# __in DWORD BaseOfDll,
|
|
533
558
|
# __in_opt PVOID UserContext
|
|
534
559
|
# );
|
|
535
|
-
PSYM_ENUMMODULES_CALLBACK
|
|
536
|
-
PSYM_ENUMMODULES_CALLBACKW
|
|
560
|
+
PSYM_ENUMMODULES_CALLBACK = WINFUNCTYPE(BOOL, LPSTR, DWORD, PVOID)
|
|
561
|
+
PSYM_ENUMMODULES_CALLBACKW = WINFUNCTYPE(BOOL, LPWSTR, DWORD, PVOID)
|
|
537
562
|
|
|
538
563
|
# BOOL CALLBACK SymEnumerateModulesProc64(
|
|
539
564
|
# __in PCTSTR ModuleName,
|
|
540
565
|
# __in DWORD64 BaseOfDll,
|
|
541
566
|
# __in_opt PVOID UserContext
|
|
542
567
|
# );
|
|
543
|
-
PSYM_ENUMMODULES_CALLBACK64
|
|
568
|
+
PSYM_ENUMMODULES_CALLBACK64 = WINFUNCTYPE(BOOL, LPSTR, DWORD64, PVOID)
|
|
544
569
|
PSYM_ENUMMODULES_CALLBACKW64 = WINFUNCTYPE(BOOL, LPWSTR, DWORD64, PVOID)
|
|
545
570
|
|
|
571
|
+
|
|
546
572
|
# BOOL WINAPI SymEnumerateModules(
|
|
547
573
|
# __in HANDLE hProcess,
|
|
548
574
|
# __in PSYM_ENUMMODULES_CALLBACK EnumModulesCallback,
|
|
549
575
|
# __in_opt PVOID UserContext
|
|
550
576
|
# );
|
|
551
|
-
def SymEnumerateModulesA(hProcess, EnumModulesCallback, UserContext
|
|
577
|
+
def SymEnumerateModulesA(hProcess, EnumModulesCallback, UserContext=None):
|
|
552
578
|
_SymEnumerateModules = windll.dbghelp.SymEnumerateModules
|
|
553
579
|
_SymEnumerateModules.argtypes = [HANDLE, PSYM_ENUMMODULES_CALLBACK, PVOID]
|
|
554
|
-
_SymEnumerateModules.restype
|
|
580
|
+
_SymEnumerateModules.restype = bool
|
|
555
581
|
_SymEnumerateModules.errcheck = RaiseIfZero
|
|
556
582
|
|
|
557
583
|
EnumModulesCallback = PSYM_ENUMMODULES_CALLBACK(EnumModulesCallback)
|
|
@@ -561,10 +587,11 @@ def SymEnumerateModulesA(hProcess, EnumModulesCallback, UserContext = None):
|
|
|
561
587
|
UserContext = LPVOID(NULL)
|
|
562
588
|
_SymEnumerateModules(hProcess, EnumModulesCallback, UserContext)
|
|
563
589
|
|
|
564
|
-
|
|
590
|
+
|
|
591
|
+
def SymEnumerateModulesW(hProcess, EnumModulesCallback, UserContext=None):
|
|
565
592
|
_SymEnumerateModulesW = windll.dbghelp.SymEnumerateModulesW
|
|
566
593
|
_SymEnumerateModulesW.argtypes = [HANDLE, PSYM_ENUMMODULES_CALLBACKW, PVOID]
|
|
567
|
-
_SymEnumerateModulesW.restype
|
|
594
|
+
_SymEnumerateModulesW.restype = bool
|
|
568
595
|
_SymEnumerateModulesW.errcheck = RaiseIfZero
|
|
569
596
|
|
|
570
597
|
EnumModulesCallback = PSYM_ENUMMODULES_CALLBACKW(EnumModulesCallback)
|
|
@@ -574,17 +601,19 @@ def SymEnumerateModulesW(hProcess, EnumModulesCallback, UserContext = None):
|
|
|
574
601
|
UserContext = LPVOID(NULL)
|
|
575
602
|
_SymEnumerateModulesW(hProcess, EnumModulesCallback, UserContext)
|
|
576
603
|
|
|
604
|
+
|
|
577
605
|
SymEnumerateModules = GuessStringType(SymEnumerateModulesA, SymEnumerateModulesW)
|
|
578
606
|
|
|
607
|
+
|
|
579
608
|
# BOOL WINAPI SymEnumerateModules64(
|
|
580
609
|
# __in HANDLE hProcess,
|
|
581
610
|
# __in PSYM_ENUMMODULES_CALLBACK64 EnumModulesCallback,
|
|
582
611
|
# __in_opt PVOID UserContext
|
|
583
612
|
# );
|
|
584
|
-
def SymEnumerateModules64A(hProcess, EnumModulesCallback, UserContext
|
|
613
|
+
def SymEnumerateModules64A(hProcess, EnumModulesCallback, UserContext=None):
|
|
585
614
|
_SymEnumerateModules64 = windll.dbghelp.SymEnumerateModules64
|
|
586
615
|
_SymEnumerateModules64.argtypes = [HANDLE, PSYM_ENUMMODULES_CALLBACK64, PVOID]
|
|
587
|
-
_SymEnumerateModules64.restype
|
|
616
|
+
_SymEnumerateModules64.restype = bool
|
|
588
617
|
_SymEnumerateModules64.errcheck = RaiseIfZero
|
|
589
618
|
|
|
590
619
|
EnumModulesCallback = PSYM_ENUMMODULES_CALLBACK64(EnumModulesCallback)
|
|
@@ -594,10 +623,11 @@ def SymEnumerateModules64A(hProcess, EnumModulesCallback, UserContext = None):
|
|
|
594
623
|
UserContext = LPVOID(NULL)
|
|
595
624
|
_SymEnumerateModules64(hProcess, EnumModulesCallback, UserContext)
|
|
596
625
|
|
|
597
|
-
|
|
626
|
+
|
|
627
|
+
def SymEnumerateModules64W(hProcess, EnumModulesCallback, UserContext=None):
|
|
598
628
|
_SymEnumerateModules64W = windll.dbghelp.SymEnumerateModules64W
|
|
599
629
|
_SymEnumerateModules64W.argtypes = [HANDLE, PSYM_ENUMMODULES_CALLBACK64W, PVOID]
|
|
600
|
-
_SymEnumerateModules64W.restype
|
|
630
|
+
_SymEnumerateModules64W.restype = bool
|
|
601
631
|
_SymEnumerateModules64W.errcheck = RaiseIfZero
|
|
602
632
|
|
|
603
633
|
EnumModulesCallback = PSYM_ENUMMODULES_CALLBACK64W(EnumModulesCallback)
|
|
@@ -607,6 +637,7 @@ def SymEnumerateModules64W(hProcess, EnumModulesCallback, UserContext = None):
|
|
|
607
637
|
UserContext = LPVOID(NULL)
|
|
608
638
|
_SymEnumerateModules64W(hProcess, EnumModulesCallback, UserContext)
|
|
609
639
|
|
|
640
|
+
|
|
610
641
|
SymEnumerateModules64 = GuessStringType(SymEnumerateModules64A, SymEnumerateModules64W)
|
|
611
642
|
|
|
612
643
|
# BOOL CALLBACK SymEnumerateSymbolsProc(
|
|
@@ -615,8 +646,8 @@ SymEnumerateModules64 = GuessStringType(SymEnumerateModules64A, SymEnumerateModu
|
|
|
615
646
|
# __in ULONG SymbolSize,
|
|
616
647
|
# __in_opt PVOID UserContext
|
|
617
648
|
# );
|
|
618
|
-
PSYM_ENUMSYMBOLS_CALLBACK
|
|
619
|
-
PSYM_ENUMSYMBOLS_CALLBACKW
|
|
649
|
+
PSYM_ENUMSYMBOLS_CALLBACK = WINFUNCTYPE(BOOL, LPSTR, DWORD, ULONG, PVOID)
|
|
650
|
+
PSYM_ENUMSYMBOLS_CALLBACKW = WINFUNCTYPE(BOOL, LPWSTR, DWORD, ULONG, PVOID)
|
|
620
651
|
|
|
621
652
|
# BOOL CALLBACK SymEnumerateSymbolsProc64(
|
|
622
653
|
# __in PCTSTR SymbolName,
|
|
@@ -624,19 +655,20 @@ PSYM_ENUMSYMBOLS_CALLBACKW = WINFUNCTYPE(BOOL, LPWSTR, DWORD, ULONG, PVOID)
|
|
|
624
655
|
# __in ULONG SymbolSize,
|
|
625
656
|
# __in_opt PVOID UserContext
|
|
626
657
|
# );
|
|
627
|
-
PSYM_ENUMSYMBOLS_CALLBACK64
|
|
658
|
+
PSYM_ENUMSYMBOLS_CALLBACK64 = WINFUNCTYPE(BOOL, LPSTR, DWORD64, ULONG, PVOID)
|
|
628
659
|
PSYM_ENUMSYMBOLS_CALLBACKW64 = WINFUNCTYPE(BOOL, LPWSTR, DWORD64, ULONG, PVOID)
|
|
629
660
|
|
|
661
|
+
|
|
630
662
|
# BOOL WINAPI SymEnumerateSymbols(
|
|
631
663
|
# __in HANDLE hProcess,
|
|
632
664
|
# __in ULONG BaseOfDll,
|
|
633
665
|
# __in PSYM_ENUMSYMBOLS_CALLBACK EnumSymbolsCallback,
|
|
634
666
|
# __in_opt PVOID UserContext
|
|
635
667
|
# );
|
|
636
|
-
def SymEnumerateSymbolsA(hProcess, BaseOfDll, EnumSymbolsCallback, UserContext
|
|
668
|
+
def SymEnumerateSymbolsA(hProcess, BaseOfDll, EnumSymbolsCallback, UserContext=None):
|
|
637
669
|
_SymEnumerateSymbols = windll.dbghelp.SymEnumerateSymbols
|
|
638
670
|
_SymEnumerateSymbols.argtypes = [HANDLE, ULONG, PSYM_ENUMSYMBOLS_CALLBACK, PVOID]
|
|
639
|
-
_SymEnumerateSymbols.restype
|
|
671
|
+
_SymEnumerateSymbols.restype = bool
|
|
640
672
|
_SymEnumerateSymbols.errcheck = RaiseIfZero
|
|
641
673
|
|
|
642
674
|
EnumSymbolsCallback = PSYM_ENUMSYMBOLS_CALLBACK(EnumSymbolsCallback)
|
|
@@ -646,10 +678,11 @@ def SymEnumerateSymbolsA(hProcess, BaseOfDll, EnumSymbolsCallback, UserContext =
|
|
|
646
678
|
UserContext = LPVOID(NULL)
|
|
647
679
|
_SymEnumerateSymbols(hProcess, BaseOfDll, EnumSymbolsCallback, UserContext)
|
|
648
680
|
|
|
649
|
-
|
|
681
|
+
|
|
682
|
+
def SymEnumerateSymbolsW(hProcess, BaseOfDll, EnumSymbolsCallback, UserContext=None):
|
|
650
683
|
_SymEnumerateSymbolsW = windll.dbghelp.SymEnumerateSymbolsW
|
|
651
684
|
_SymEnumerateSymbolsW.argtypes = [HANDLE, ULONG, PSYM_ENUMSYMBOLS_CALLBACKW, PVOID]
|
|
652
|
-
_SymEnumerateSymbolsW.restype
|
|
685
|
+
_SymEnumerateSymbolsW.restype = bool
|
|
653
686
|
_SymEnumerateSymbolsW.errcheck = RaiseIfZero
|
|
654
687
|
|
|
655
688
|
EnumSymbolsCallback = PSYM_ENUMSYMBOLS_CALLBACKW(EnumSymbolsCallback)
|
|
@@ -659,18 +692,20 @@ def SymEnumerateSymbolsW(hProcess, BaseOfDll, EnumSymbolsCallback, UserContext =
|
|
|
659
692
|
UserContext = LPVOID(NULL)
|
|
660
693
|
_SymEnumerateSymbolsW(hProcess, BaseOfDll, EnumSymbolsCallback, UserContext)
|
|
661
694
|
|
|
695
|
+
|
|
662
696
|
SymEnumerateSymbols = GuessStringType(SymEnumerateSymbolsA, SymEnumerateSymbolsW)
|
|
663
697
|
|
|
698
|
+
|
|
664
699
|
# BOOL WINAPI SymEnumerateSymbols64(
|
|
665
700
|
# __in HANDLE hProcess,
|
|
666
701
|
# __in ULONG64 BaseOfDll,
|
|
667
702
|
# __in PSYM_ENUMSYMBOLS_CALLBACK64 EnumSymbolsCallback,
|
|
668
703
|
# __in_opt PVOID UserContext
|
|
669
704
|
# );
|
|
670
|
-
def SymEnumerateSymbols64A(hProcess, BaseOfDll, EnumSymbolsCallback, UserContext
|
|
705
|
+
def SymEnumerateSymbols64A(hProcess, BaseOfDll, EnumSymbolsCallback, UserContext=None):
|
|
671
706
|
_SymEnumerateSymbols64 = windll.dbghelp.SymEnumerateSymbols64
|
|
672
707
|
_SymEnumerateSymbols64.argtypes = [HANDLE, ULONG64, PSYM_ENUMSYMBOLS_CALLBACK64, PVOID]
|
|
673
|
-
_SymEnumerateSymbols64.restype
|
|
708
|
+
_SymEnumerateSymbols64.restype = bool
|
|
674
709
|
_SymEnumerateSymbols64.errcheck = RaiseIfZero
|
|
675
710
|
|
|
676
711
|
EnumSymbolsCallback = PSYM_ENUMSYMBOLS_CALLBACK64(EnumSymbolsCallback)
|
|
@@ -680,10 +715,11 @@ def SymEnumerateSymbols64A(hProcess, BaseOfDll, EnumSymbolsCallback, UserContext
|
|
|
680
715
|
UserContext = LPVOID(NULL)
|
|
681
716
|
_SymEnumerateSymbols64(hProcess, BaseOfDll, EnumSymbolsCallback, UserContext)
|
|
682
717
|
|
|
683
|
-
|
|
718
|
+
|
|
719
|
+
def SymEnumerateSymbols64W(hProcess, BaseOfDll, EnumSymbolsCallback, UserContext=None):
|
|
684
720
|
_SymEnumerateSymbols64W = windll.dbghelp.SymEnumerateSymbols64W
|
|
685
721
|
_SymEnumerateSymbols64W.argtypes = [HANDLE, ULONG64, PSYM_ENUMSYMBOLS_CALLBACK64W, PVOID]
|
|
686
|
-
_SymEnumerateSymbols64W.restype
|
|
722
|
+
_SymEnumerateSymbols64W.restype = bool
|
|
687
723
|
_SymEnumerateSymbols64W.errcheck = RaiseIfZero
|
|
688
724
|
|
|
689
725
|
EnumSymbolsCallback = PSYM_ENUMSYMBOLS_CALLBACK64W(EnumSymbolsCallback)
|
|
@@ -693,38 +729,43 @@ def SymEnumerateSymbols64W(hProcess, BaseOfDll, EnumSymbolsCallback, UserContext
|
|
|
693
729
|
UserContext = LPVOID(NULL)
|
|
694
730
|
_SymEnumerateSymbols64W(hProcess, BaseOfDll, EnumSymbolsCallback, UserContext)
|
|
695
731
|
|
|
732
|
+
|
|
696
733
|
SymEnumerateSymbols64 = GuessStringType(SymEnumerateSymbols64A, SymEnumerateSymbols64W)
|
|
697
734
|
|
|
735
|
+
|
|
698
736
|
# DWORD WINAPI UnDecorateSymbolName(
|
|
699
737
|
# __in PCTSTR DecoratedName,
|
|
700
738
|
# __out PTSTR UnDecoratedName,
|
|
701
739
|
# __in DWORD UndecoratedLength,
|
|
702
740
|
# __in DWORD Flags
|
|
703
741
|
# );
|
|
704
|
-
def UnDecorateSymbolNameA(DecoratedName, Flags
|
|
742
|
+
def UnDecorateSymbolNameA(DecoratedName, Flags=UNDNAME_COMPLETE):
|
|
705
743
|
_UnDecorateSymbolNameA = windll.dbghelp.UnDecorateSymbolName
|
|
706
744
|
_UnDecorateSymbolNameA.argtypes = [LPSTR, LPSTR, DWORD, DWORD]
|
|
707
|
-
_UnDecorateSymbolNameA.restype
|
|
745
|
+
_UnDecorateSymbolNameA.restype = DWORD
|
|
708
746
|
_UnDecorateSymbolNameA.errcheck = RaiseIfZero
|
|
709
747
|
|
|
710
748
|
UndecoratedLength = _UnDecorateSymbolNameA(DecoratedName, None, 0, Flags)
|
|
711
|
-
UnDecoratedName = ctypes.create_string_buffer(
|
|
749
|
+
UnDecoratedName = ctypes.create_string_buffer("", UndecoratedLength + 1)
|
|
712
750
|
_UnDecorateSymbolNameA(DecoratedName, UnDecoratedName, UndecoratedLength, Flags)
|
|
713
751
|
return UnDecoratedName.value
|
|
714
752
|
|
|
715
|
-
|
|
753
|
+
|
|
754
|
+
def UnDecorateSymbolNameW(DecoratedName, Flags=UNDNAME_COMPLETE):
|
|
716
755
|
_UnDecorateSymbolNameW = windll.dbghelp.UnDecorateSymbolNameW
|
|
717
756
|
_UnDecorateSymbolNameW.argtypes = [LPWSTR, LPWSTR, DWORD, DWORD]
|
|
718
|
-
_UnDecorateSymbolNameW.restype
|
|
757
|
+
_UnDecorateSymbolNameW.restype = DWORD
|
|
719
758
|
_UnDecorateSymbolNameW.errcheck = RaiseIfZero
|
|
720
759
|
|
|
721
760
|
UndecoratedLength = _UnDecorateSymbolNameW(DecoratedName, None, 0, Flags)
|
|
722
|
-
UnDecoratedName = ctypes.create_unicode_buffer(
|
|
761
|
+
UnDecoratedName = ctypes.create_unicode_buffer("", UndecoratedLength + 1)
|
|
723
762
|
_UnDecorateSymbolNameW(DecoratedName, UnDecoratedName, UndecoratedLength, Flags)
|
|
724
763
|
return UnDecoratedName.value
|
|
725
764
|
|
|
765
|
+
|
|
726
766
|
UnDecorateSymbolName = GuessStringType(UnDecorateSymbolNameA, UnDecorateSymbolNameW)
|
|
727
767
|
|
|
768
|
+
|
|
728
769
|
# BOOL WINAPI SymGetSearchPath(
|
|
729
770
|
# __in HANDLE hProcess,
|
|
730
771
|
# __out PTSTR SearchPath,
|
|
@@ -733,7 +774,7 @@ UnDecorateSymbolName = GuessStringType(UnDecorateSymbolNameA, UnDecorateSymbolNa
|
|
|
733
774
|
def SymGetSearchPathA(hProcess):
|
|
734
775
|
_SymGetSearchPath = windll.dbghelp.SymGetSearchPath
|
|
735
776
|
_SymGetSearchPath.argtypes = [HANDLE, LPSTR, DWORD]
|
|
736
|
-
_SymGetSearchPath.restype
|
|
777
|
+
_SymGetSearchPath.restype = bool
|
|
737
778
|
_SymGetSearchPath.errcheck = RaiseIfZero
|
|
738
779
|
|
|
739
780
|
SearchPathLength = MAX_PATH
|
|
@@ -741,43 +782,49 @@ def SymGetSearchPathA(hProcess):
|
|
|
741
782
|
_SymGetSearchPath(hProcess, SearchPath, SearchPathLength)
|
|
742
783
|
return SearchPath.value
|
|
743
784
|
|
|
785
|
+
|
|
744
786
|
def SymGetSearchPathW(hProcess):
|
|
745
787
|
_SymGetSearchPathW = windll.dbghelp.SymGetSearchPathW
|
|
746
788
|
_SymGetSearchPathW.argtypes = [HANDLE, LPWSTR, DWORD]
|
|
747
|
-
_SymGetSearchPathW.restype
|
|
789
|
+
_SymGetSearchPathW.restype = bool
|
|
748
790
|
_SymGetSearchPathW.errcheck = RaiseIfZero
|
|
749
791
|
|
|
750
792
|
SearchPathLength = MAX_PATH
|
|
751
|
-
SearchPath = ctypes.create_unicode_buffer(
|
|
793
|
+
SearchPath = ctypes.create_unicode_buffer("", SearchPathLength)
|
|
752
794
|
_SymGetSearchPathW(hProcess, SearchPath, SearchPathLength)
|
|
753
795
|
return SearchPath.value
|
|
754
796
|
|
|
797
|
+
|
|
755
798
|
SymGetSearchPath = GuessStringType(SymGetSearchPathA, SymGetSearchPathW)
|
|
756
799
|
|
|
800
|
+
|
|
757
801
|
# BOOL WINAPI SymSetSearchPath(
|
|
758
802
|
# __in HANDLE hProcess,
|
|
759
803
|
# __in_opt PCTSTR SearchPath
|
|
760
804
|
# );
|
|
761
|
-
def SymSetSearchPathA(hProcess, SearchPath
|
|
805
|
+
def SymSetSearchPathA(hProcess, SearchPath=None):
|
|
762
806
|
_SymSetSearchPath = windll.dbghelp.SymSetSearchPath
|
|
763
807
|
_SymSetSearchPath.argtypes = [HANDLE, LPSTR]
|
|
764
|
-
_SymSetSearchPath.restype
|
|
808
|
+
_SymSetSearchPath.restype = bool
|
|
765
809
|
_SymSetSearchPath.errcheck = RaiseIfZero
|
|
766
810
|
if not SearchPath:
|
|
767
811
|
SearchPath = None
|
|
768
812
|
_SymSetSearchPath(hProcess, SearchPath)
|
|
769
813
|
|
|
770
|
-
|
|
814
|
+
|
|
815
|
+
def SymSetSearchPathW(hProcess, SearchPath=None):
|
|
771
816
|
_SymSetSearchPathW = windll.dbghelp.SymSetSearchPathW
|
|
772
817
|
_SymSetSearchPathW.argtypes = [HANDLE, LPWSTR]
|
|
773
|
-
_SymSetSearchPathW.restype
|
|
818
|
+
_SymSetSearchPathW.restype = bool
|
|
774
819
|
_SymSetSearchPathW.errcheck = RaiseIfZero
|
|
775
820
|
if not SearchPath:
|
|
776
821
|
SearchPath = None
|
|
777
822
|
_SymSetSearchPathW(hProcess, SearchPath)
|
|
778
823
|
|
|
824
|
+
|
|
779
825
|
SymSetSearchPath = GuessStringType(SymSetSearchPathA, SymSetSearchPathW)
|
|
780
826
|
|
|
827
|
+
|
|
781
828
|
# PTCHAR WINAPI SymGetHomeDirectory(
|
|
782
829
|
# __in DWORD type,
|
|
783
830
|
# __out PTSTR dir,
|
|
@@ -786,54 +833,59 @@ SymSetSearchPath = GuessStringType(SymSetSearchPathA, SymSetSearchPathW)
|
|
|
786
833
|
def SymGetHomeDirectoryA(type):
|
|
787
834
|
_SymGetHomeDirectoryA = windll.dbghelp.SymGetHomeDirectoryA
|
|
788
835
|
_SymGetHomeDirectoryA.argtypes = [DWORD, LPSTR, SIZE_T]
|
|
789
|
-
_SymGetHomeDirectoryA.restype
|
|
836
|
+
_SymGetHomeDirectoryA.restype = LPSTR
|
|
790
837
|
_SymGetHomeDirectoryA.errcheck = RaiseIfZero
|
|
791
838
|
|
|
792
839
|
size = MAX_PATH
|
|
793
|
-
dir
|
|
840
|
+
dir = ctypes.create_string_buffer("", size)
|
|
794
841
|
_SymGetHomeDirectoryA(type, dir, size)
|
|
795
842
|
return dir.value
|
|
796
843
|
|
|
844
|
+
|
|
797
845
|
def SymGetHomeDirectoryW(type):
|
|
798
846
|
_SymGetHomeDirectoryW = windll.dbghelp.SymGetHomeDirectoryW
|
|
799
847
|
_SymGetHomeDirectoryW.argtypes = [DWORD, LPWSTR, SIZE_T]
|
|
800
|
-
_SymGetHomeDirectoryW.restype
|
|
848
|
+
_SymGetHomeDirectoryW.restype = LPWSTR
|
|
801
849
|
_SymGetHomeDirectoryW.errcheck = RaiseIfZero
|
|
802
850
|
|
|
803
851
|
size = MAX_PATH
|
|
804
|
-
dir
|
|
852
|
+
dir = ctypes.create_unicode_buffer("", size)
|
|
805
853
|
_SymGetHomeDirectoryW(type, dir, size)
|
|
806
854
|
return dir.value
|
|
807
855
|
|
|
856
|
+
|
|
808
857
|
SymGetHomeDirectory = GuessStringType(SymGetHomeDirectoryA, SymGetHomeDirectoryW)
|
|
809
858
|
|
|
859
|
+
|
|
810
860
|
# PTCHAR WINAPI SymSetHomeDirectory(
|
|
811
861
|
# __in HANDLE hProcess,
|
|
812
862
|
# __in_opt PCTSTR dir
|
|
813
863
|
# );
|
|
814
|
-
def SymSetHomeDirectoryA(hProcess, dir
|
|
864
|
+
def SymSetHomeDirectoryA(hProcess, dir=None):
|
|
815
865
|
_SymSetHomeDirectoryA = windll.dbghelp.SymSetHomeDirectoryA
|
|
816
866
|
_SymSetHomeDirectoryA.argtypes = [HANDLE, LPSTR]
|
|
817
|
-
_SymSetHomeDirectoryA.restype
|
|
867
|
+
_SymSetHomeDirectoryA.restype = LPSTR
|
|
818
868
|
_SymSetHomeDirectoryA.errcheck = RaiseIfZero
|
|
819
869
|
if not dir:
|
|
820
870
|
dir = None
|
|
821
871
|
_SymSetHomeDirectoryA(hProcess, dir)
|
|
822
872
|
return dir
|
|
823
873
|
|
|
824
|
-
|
|
874
|
+
|
|
875
|
+
def SymSetHomeDirectoryW(hProcess, dir=None):
|
|
825
876
|
_SymSetHomeDirectoryW = windll.dbghelp.SymSetHomeDirectoryW
|
|
826
877
|
_SymSetHomeDirectoryW.argtypes = [HANDLE, LPWSTR]
|
|
827
|
-
_SymSetHomeDirectoryW.restype
|
|
878
|
+
_SymSetHomeDirectoryW.restype = LPWSTR
|
|
828
879
|
_SymSetHomeDirectoryW.errcheck = RaiseIfZero
|
|
829
880
|
if not dir:
|
|
830
881
|
dir = None
|
|
831
882
|
_SymSetHomeDirectoryW(hProcess, dir)
|
|
832
883
|
return dir
|
|
833
884
|
|
|
885
|
+
|
|
834
886
|
SymSetHomeDirectory = GuessStringType(SymSetHomeDirectoryA, SymSetHomeDirectoryW)
|
|
835
887
|
|
|
836
|
-
|
|
888
|
+
# --- DbgHelp 5+ support, patch by Neitsa --------------------------------------
|
|
837
889
|
|
|
838
890
|
# XXX TODO
|
|
839
891
|
# + use the GuessStringType decorator for ANSI/Wide versions
|
|
@@ -843,56 +895,63 @@ SymSetHomeDirectory = GuessStringType(SymSetHomeDirectoryA, SymSetHomeDirectoryW
|
|
|
843
895
|
# ourselves with a default error code?)
|
|
844
896
|
# /Mario
|
|
845
897
|
|
|
846
|
-
#maximum length of a symbol name
|
|
898
|
+
# maximum length of a symbol name
|
|
847
899
|
MAX_SYM_NAME = 2000
|
|
848
900
|
|
|
901
|
+
|
|
849
902
|
class SYM_INFO(Structure):
|
|
850
903
|
_fields_ = [
|
|
851
|
-
("SizeOfStruct",
|
|
852
|
-
("TypeIndex",
|
|
853
|
-
("Reserved",
|
|
854
|
-
("Index",
|
|
855
|
-
("Size",
|
|
856
|
-
("ModBase",
|
|
857
|
-
("Flags",
|
|
858
|
-
("Value",
|
|
859
|
-
("Address",
|
|
860
|
-
("Register",
|
|
861
|
-
("Scope",
|
|
862
|
-
("Tag",
|
|
863
|
-
("NameLen",
|
|
864
|
-
("MaxNameLen",
|
|
865
|
-
("Name",
|
|
904
|
+
("SizeOfStruct", ULONG),
|
|
905
|
+
("TypeIndex", ULONG),
|
|
906
|
+
("Reserved", ULONG64 * 2),
|
|
907
|
+
("Index", ULONG),
|
|
908
|
+
("Size", ULONG),
|
|
909
|
+
("ModBase", ULONG64),
|
|
910
|
+
("Flags", ULONG),
|
|
911
|
+
("Value", ULONG64),
|
|
912
|
+
("Address", ULONG64),
|
|
913
|
+
("Register", ULONG),
|
|
914
|
+
("Scope", ULONG),
|
|
915
|
+
("Tag", ULONG),
|
|
916
|
+
("NameLen", ULONG),
|
|
917
|
+
("MaxNameLen", ULONG),
|
|
918
|
+
("Name", CHAR * (MAX_SYM_NAME + 1)),
|
|
866
919
|
]
|
|
920
|
+
|
|
921
|
+
|
|
867
922
|
PSYM_INFO = POINTER(SYM_INFO)
|
|
868
923
|
|
|
924
|
+
|
|
869
925
|
class SYM_INFOW(Structure):
|
|
870
926
|
_fields_ = [
|
|
871
|
-
("SizeOfStruct",
|
|
872
|
-
("TypeIndex",
|
|
873
|
-
("Reserved",
|
|
874
|
-
("Index",
|
|
875
|
-
("Size",
|
|
876
|
-
("ModBase",
|
|
877
|
-
("Flags",
|
|
878
|
-
("Value",
|
|
879
|
-
("Address",
|
|
880
|
-
("Register",
|
|
881
|
-
("Scope",
|
|
882
|
-
("Tag",
|
|
883
|
-
("NameLen",
|
|
884
|
-
("MaxNameLen",
|
|
885
|
-
("Name",
|
|
927
|
+
("SizeOfStruct", ULONG),
|
|
928
|
+
("TypeIndex", ULONG),
|
|
929
|
+
("Reserved", ULONG64 * 2),
|
|
930
|
+
("Index", ULONG),
|
|
931
|
+
("Size", ULONG),
|
|
932
|
+
("ModBase", ULONG64),
|
|
933
|
+
("Flags", ULONG),
|
|
934
|
+
("Value", ULONG64),
|
|
935
|
+
("Address", ULONG64),
|
|
936
|
+
("Register", ULONG),
|
|
937
|
+
("Scope", ULONG),
|
|
938
|
+
("Tag", ULONG),
|
|
939
|
+
("NameLen", ULONG),
|
|
940
|
+
("MaxNameLen", ULONG),
|
|
941
|
+
("Name", WCHAR * (MAX_SYM_NAME + 1)),
|
|
886
942
|
]
|
|
943
|
+
|
|
944
|
+
|
|
887
945
|
PSYM_INFOW = POINTER(SYM_INFOW)
|
|
888
946
|
|
|
889
|
-
|
|
947
|
+
|
|
948
|
+
# ===============================================================================
|
|
890
949
|
# BOOL WINAPI SymFromName(
|
|
891
950
|
# __in HANDLE hProcess,
|
|
892
951
|
# __in PCTSTR Name,
|
|
893
952
|
# __inout PSYMBOL_INFO Symbol
|
|
894
953
|
# );
|
|
895
|
-
|
|
954
|
+
# ===============================================================================
|
|
896
955
|
def SymFromName(hProcess, Name):
|
|
897
956
|
_SymFromNameA = windll.dbghelp.SymFromName
|
|
898
957
|
_SymFromNameA.argtypes = [HANDLE, LPSTR, PSYM_INFO]
|
|
@@ -900,13 +959,14 @@ def SymFromName(hProcess, Name):
|
|
|
900
959
|
_SymFromNameA.errcheck = RaiseIfZero
|
|
901
960
|
|
|
902
961
|
SymInfo = SYM_INFO()
|
|
903
|
-
SymInfo.SizeOfStruct = 88
|
|
962
|
+
SymInfo.SizeOfStruct = 88 # *don't modify*: sizeof(SYMBOL_INFO) in C.
|
|
904
963
|
SymInfo.MaxNameLen = MAX_SYM_NAME
|
|
905
964
|
|
|
906
965
|
_SymFromNameA(hProcess, Name, byref(SymInfo))
|
|
907
966
|
|
|
908
967
|
return SymInfo
|
|
909
968
|
|
|
969
|
+
|
|
910
970
|
def SymFromNameW(hProcess, Name):
|
|
911
971
|
_SymFromNameW = windll.dbghelp.SymFromNameW
|
|
912
972
|
_SymFromNameW.argtypes = [HANDLE, LPWSTR, PSYM_INFOW]
|
|
@@ -914,21 +974,22 @@ def SymFromNameW(hProcess, Name):
|
|
|
914
974
|
_SymFromNameW.errcheck = RaiseIfZero
|
|
915
975
|
|
|
916
976
|
SymInfo = SYM_INFOW()
|
|
917
|
-
SymInfo.SizeOfStruct = 88
|
|
977
|
+
SymInfo.SizeOfStruct = 88 # *don't modify*: sizeof(SYMBOL_INFOW) in C.
|
|
918
978
|
SymInfo.MaxNameLen = MAX_SYM_NAME
|
|
919
979
|
|
|
920
980
|
_SymFromNameW(hProcess, Name, byref(SymInfo))
|
|
921
981
|
|
|
922
982
|
return SymInfo
|
|
923
983
|
|
|
924
|
-
|
|
984
|
+
|
|
985
|
+
# ===============================================================================
|
|
925
986
|
# BOOL WINAPI SymFromAddr(
|
|
926
987
|
# __in HANDLE hProcess,
|
|
927
988
|
# __in DWORD64 Address,
|
|
928
989
|
# __out_opt PDWORD64 Displacement,
|
|
929
990
|
# __inout PSYMBOL_INFO Symbol
|
|
930
991
|
# );
|
|
931
|
-
|
|
992
|
+
# ===============================================================================
|
|
932
993
|
def SymFromAddr(hProcess, Address):
|
|
933
994
|
_SymFromAddr = windll.dbghelp.SymFromAddr
|
|
934
995
|
_SymFromAddr.argtypes = [HANDLE, DWORD64, PDWORD64, PSYM_INFO]
|
|
@@ -936,7 +997,7 @@ def SymFromAddr(hProcess, Address):
|
|
|
936
997
|
_SymFromAddr.errcheck = RaiseIfZero
|
|
937
998
|
|
|
938
999
|
SymInfo = SYM_INFO()
|
|
939
|
-
SymInfo.SizeOfStruct = 88
|
|
1000
|
+
SymInfo.SizeOfStruct = 88 # *don't modify*: sizeof(SYMBOL_INFO) in C.
|
|
940
1001
|
SymInfo.MaxNameLen = MAX_SYM_NAME
|
|
941
1002
|
|
|
942
1003
|
Displacement = DWORD64(0)
|
|
@@ -944,6 +1005,7 @@ def SymFromAddr(hProcess, Address):
|
|
|
944
1005
|
|
|
945
1006
|
return (Displacement.value, SymInfo)
|
|
946
1007
|
|
|
1008
|
+
|
|
947
1009
|
def SymFromAddrW(hProcess, Address):
|
|
948
1010
|
_SymFromAddr = windll.dbghelp.SymFromAddrW
|
|
949
1011
|
_SymFromAddr.argtypes = [HANDLE, DWORD64, PDWORD64, PSYM_INFOW]
|
|
@@ -951,7 +1013,7 @@ def SymFromAddrW(hProcess, Address):
|
|
|
951
1013
|
_SymFromAddr.errcheck = RaiseIfZero
|
|
952
1014
|
|
|
953
1015
|
SymInfo = SYM_INFOW()
|
|
954
|
-
SymInfo.SizeOfStruct = 88
|
|
1016
|
+
SymInfo.SizeOfStruct = 88 # *don't modify*: sizeof(SYMBOL_INFOW) in C.
|
|
955
1017
|
SymInfo.MaxNameLen = MAX_SYM_NAME
|
|
956
1018
|
|
|
957
1019
|
Displacement = DWORD64(0)
|
|
@@ -959,7 +1021,8 @@ def SymFromAddrW(hProcess, Address):
|
|
|
959
1021
|
|
|
960
1022
|
return (Displacement.value, SymInfo)
|
|
961
1023
|
|
|
962
|
-
|
|
1024
|
+
|
|
1025
|
+
# ===============================================================================
|
|
963
1026
|
# typedef struct _IMAGEHLP_SYMBOL64 {
|
|
964
1027
|
# DWORD SizeOfStruct;
|
|
965
1028
|
# DWORD64 Address;
|
|
@@ -968,19 +1031,22 @@ def SymFromAddrW(hProcess, Address):
|
|
|
968
1031
|
# DWORD MaxNameLength;
|
|
969
1032
|
# CHAR Name[1];
|
|
970
1033
|
# } IMAGEHLP_SYMBOL64, *PIMAGEHLP_SYMBOL64;
|
|
971
|
-
|
|
972
|
-
class IMAGEHLP_SYMBOL64
|
|
1034
|
+
# ===============================================================================
|
|
1035
|
+
class IMAGEHLP_SYMBOL64(Structure):
|
|
973
1036
|
_fields_ = [
|
|
974
|
-
("SizeOfStruct",
|
|
975
|
-
("Address",
|
|
976
|
-
("Size",
|
|
977
|
-
("Flags",
|
|
978
|
-
("MaxNameLength",
|
|
979
|
-
("Name",
|
|
1037
|
+
("SizeOfStruct", DWORD),
|
|
1038
|
+
("Address", DWORD64),
|
|
1039
|
+
("Size", DWORD),
|
|
1040
|
+
("Flags", DWORD),
|
|
1041
|
+
("MaxNameLength", DWORD),
|
|
1042
|
+
("Name", CHAR * (MAX_SYM_NAME + 1)),
|
|
980
1043
|
]
|
|
1044
|
+
|
|
1045
|
+
|
|
981
1046
|
PIMAGEHLP_SYMBOL64 = POINTER(IMAGEHLP_SYMBOL64)
|
|
982
1047
|
|
|
983
|
-
|
|
1048
|
+
|
|
1049
|
+
# ===============================================================================
|
|
984
1050
|
# typedef struct _IMAGEHLP_SYMBOLW64 {
|
|
985
1051
|
# DWORD SizeOfStruct;
|
|
986
1052
|
# DWORD64 Address;
|
|
@@ -989,26 +1055,29 @@ PIMAGEHLP_SYMBOL64 = POINTER(IMAGEHLP_SYMBOL64)
|
|
|
989
1055
|
# DWORD MaxNameLength;
|
|
990
1056
|
# WCHAR Name[1];
|
|
991
1057
|
# } IMAGEHLP_SYMBOLW64, *PIMAGEHLP_SYMBOLW64;
|
|
992
|
-
|
|
993
|
-
class IMAGEHLP_SYMBOLW64
|
|
1058
|
+
# ===============================================================================
|
|
1059
|
+
class IMAGEHLP_SYMBOLW64(Structure):
|
|
994
1060
|
_fields_ = [
|
|
995
|
-
("SizeOfStruct",
|
|
996
|
-
("Address",
|
|
997
|
-
("Size",
|
|
998
|
-
("Flags",
|
|
999
|
-
("MaxNameLength",
|
|
1000
|
-
("Name",
|
|
1061
|
+
("SizeOfStruct", DWORD),
|
|
1062
|
+
("Address", DWORD64),
|
|
1063
|
+
("Size", DWORD),
|
|
1064
|
+
("Flags", DWORD),
|
|
1065
|
+
("MaxNameLength", DWORD),
|
|
1066
|
+
("Name", WCHAR * (MAX_SYM_NAME + 1)),
|
|
1001
1067
|
]
|
|
1068
|
+
|
|
1069
|
+
|
|
1002
1070
|
PIMAGEHLP_SYMBOLW64 = POINTER(IMAGEHLP_SYMBOLW64)
|
|
1003
1071
|
|
|
1004
|
-
|
|
1072
|
+
|
|
1073
|
+
# ===============================================================================
|
|
1005
1074
|
# BOOL WINAPI SymGetSymFromAddr64(
|
|
1006
1075
|
# __in HANDLE hProcess,
|
|
1007
1076
|
# __in DWORD64 Address,
|
|
1008
1077
|
# __out_opt PDWORD64 Displacement,
|
|
1009
1078
|
# __inout PIMAGEHLP_SYMBOL64 Symbol
|
|
1010
1079
|
# );
|
|
1011
|
-
|
|
1080
|
+
# ===============================================================================
|
|
1012
1081
|
def SymGetSymFromAddr64(hProcess, Address):
|
|
1013
1082
|
_SymGetSymFromAddr64 = windll.dbghelp.SymGetSymFromAddr64
|
|
1014
1083
|
_SymGetSymFromAddr64.argtypes = [HANDLE, DWORD64, PDWORD64, PIMAGEHLP_SYMBOL64]
|
|
@@ -1016,7 +1085,7 @@ def SymGetSymFromAddr64(hProcess, Address):
|
|
|
1016
1085
|
_SymGetSymFromAddr64.errcheck = RaiseIfZero
|
|
1017
1086
|
|
|
1018
1087
|
imagehlp_symbol64 = IMAGEHLP_SYMBOL64()
|
|
1019
|
-
imagehlp_symbol64.SizeOfStruct = 32
|
|
1088
|
+
imagehlp_symbol64.SizeOfStruct = 32 # *don't modify*: sizeof(IMAGEHLP_SYMBOL64) in C.
|
|
1020
1089
|
imagehlp_symbol64.MaxNameLen = MAX_SYM_NAME
|
|
1021
1090
|
|
|
1022
1091
|
Displacement = DWORD64(0)
|
|
@@ -1024,30 +1093,34 @@ def SymGetSymFromAddr64(hProcess, Address):
|
|
|
1024
1093
|
|
|
1025
1094
|
return (Displacement.value, imagehlp_symbol64)
|
|
1026
1095
|
|
|
1027
|
-
#TODO: check for the 'W' version of SymGetSymFromAddr64()
|
|
1028
1096
|
|
|
1097
|
+
# TODO: check for the 'W' version of SymGetSymFromAddr64()
|
|
1029
1098
|
|
|
1030
|
-
|
|
1099
|
+
|
|
1100
|
+
# ===============================================================================
|
|
1031
1101
|
# typedef struct API_VERSION {
|
|
1032
1102
|
# USHORT MajorVersion;
|
|
1033
1103
|
# USHORT MinorVersion;
|
|
1034
1104
|
# USHORT Revision;
|
|
1035
1105
|
# USHORT Reserved;
|
|
1036
1106
|
# } API_VERSION, *LPAPI_VERSION;
|
|
1037
|
-
|
|
1038
|
-
class API_VERSION
|
|
1107
|
+
# ===============================================================================
|
|
1108
|
+
class API_VERSION(Structure):
|
|
1039
1109
|
_fields_ = [
|
|
1040
|
-
("MajorVersion",
|
|
1041
|
-
("MinorVersion",
|
|
1042
|
-
("Revision",
|
|
1043
|
-
("Reserved",
|
|
1110
|
+
("MajorVersion", USHORT),
|
|
1111
|
+
("MinorVersion", USHORT),
|
|
1112
|
+
("Revision", USHORT),
|
|
1113
|
+
("Reserved", USHORT),
|
|
1044
1114
|
]
|
|
1115
|
+
|
|
1116
|
+
|
|
1045
1117
|
PAPI_VERSION = POINTER(API_VERSION)
|
|
1046
1118
|
LPAPI_VERSION = PAPI_VERSION
|
|
1047
1119
|
|
|
1048
|
-
|
|
1120
|
+
|
|
1121
|
+
# ===============================================================================
|
|
1049
1122
|
# LPAPI_VERSION WINAPI ImagehlpApiVersion(void);
|
|
1050
|
-
|
|
1123
|
+
# ===============================================================================
|
|
1051
1124
|
def ImagehlpApiVersion():
|
|
1052
1125
|
_ImagehlpApiVersion = windll.dbghelp.ImagehlpApiVersion
|
|
1053
1126
|
_ImagehlpApiVersion.restype = LPAPI_VERSION
|
|
@@ -1056,11 +1129,11 @@ def ImagehlpApiVersion():
|
|
|
1056
1129
|
return api_version.contents
|
|
1057
1130
|
|
|
1058
1131
|
|
|
1059
|
-
|
|
1132
|
+
# ===============================================================================
|
|
1060
1133
|
# LPAPI_VERSION WINAPI ImagehlpApiVersionEx(
|
|
1061
1134
|
# __in LPAPI_VERSION AppVersion
|
|
1062
1135
|
# );
|
|
1063
|
-
|
|
1136
|
+
# ===============================================================================
|
|
1064
1137
|
def ImagehlpApiVersionEx(MajorVersion, MinorVersion, Revision):
|
|
1065
1138
|
_ImagehlpApiVersionEx = windll.dbghelp.ImagehlpApiVersionEx
|
|
1066
1139
|
_ImagehlpApiVersionEx.argtypes = [LPAPI_VERSION]
|
|
@@ -1072,37 +1145,42 @@ def ImagehlpApiVersionEx(MajorVersion, MinorVersion, Revision):
|
|
|
1072
1145
|
|
|
1073
1146
|
return ret_api_version.contents
|
|
1074
1147
|
|
|
1075
|
-
|
|
1148
|
+
|
|
1149
|
+
# ===============================================================================
|
|
1076
1150
|
# typedef enum {
|
|
1077
1151
|
# AddrMode1616,
|
|
1078
1152
|
# AddrMode1632,
|
|
1079
1153
|
# AddrModeReal,
|
|
1080
1154
|
# AddrModeFlat
|
|
1081
1155
|
# } ADDRESS_MODE;
|
|
1082
|
-
|
|
1156
|
+
# ===============================================================================
|
|
1083
1157
|
AddrMode1616 = 0
|
|
1084
1158
|
AddrMode1632 = 1
|
|
1085
1159
|
AddrModeReal = 2
|
|
1086
1160
|
AddrModeFlat = 3
|
|
1087
1161
|
|
|
1088
|
-
ADDRESS_MODE = DWORD
|
|
1162
|
+
ADDRESS_MODE = DWORD # needed for the size of an ADDRESS_MODE (see ADDRESS64)
|
|
1163
|
+
|
|
1089
1164
|
|
|
1090
|
-
|
|
1165
|
+
# ===============================================================================
|
|
1091
1166
|
# typedef struct _tagADDRESS64 {
|
|
1092
1167
|
# DWORD64 Offset;
|
|
1093
1168
|
# WORD Segment;
|
|
1094
1169
|
# ADDRESS_MODE Mode;
|
|
1095
1170
|
# } ADDRESS64, *LPADDRESS64;
|
|
1096
|
-
|
|
1097
|
-
class ADDRESS64
|
|
1171
|
+
# ===============================================================================
|
|
1172
|
+
class ADDRESS64(Structure):
|
|
1098
1173
|
_fields_ = [
|
|
1099
|
-
("Offset",
|
|
1100
|
-
("Segment",
|
|
1101
|
-
("Mode",
|
|
1174
|
+
("Offset", DWORD64),
|
|
1175
|
+
("Segment", WORD),
|
|
1176
|
+
("Mode", ADDRESS_MODE), # it's a member of the ADDRESS_MODE enum.
|
|
1102
1177
|
]
|
|
1178
|
+
|
|
1179
|
+
|
|
1103
1180
|
LPADDRESS64 = POINTER(ADDRESS64)
|
|
1104
1181
|
|
|
1105
|
-
|
|
1182
|
+
|
|
1183
|
+
# ===============================================================================
|
|
1106
1184
|
# typedef struct _KDHELP64 {
|
|
1107
1185
|
# DWORD64 Thread;
|
|
1108
1186
|
# DWORD ThCallbackStack;
|
|
@@ -1117,25 +1195,28 @@ LPADDRESS64 = POINTER(ADDRESS64)
|
|
|
1117
1195
|
# DWORD64 StackLimit;
|
|
1118
1196
|
# DWORD64 Reserved[5];
|
|
1119
1197
|
# } KDHELP64, *PKDHELP64;
|
|
1120
|
-
|
|
1121
|
-
class KDHELP64
|
|
1198
|
+
# ===============================================================================
|
|
1199
|
+
class KDHELP64(Structure):
|
|
1122
1200
|
_fields_ = [
|
|
1123
|
-
("Thread",
|
|
1124
|
-
("ThCallbackStack",
|
|
1125
|
-
("ThCallbackBStore",
|
|
1126
|
-
("NextCallback",
|
|
1127
|
-
("FramePointer",
|
|
1128
|
-
("KiCallUserMode",
|
|
1129
|
-
("KeUserCallbackDispatcher",
|
|
1130
|
-
("SystemRangeStart",
|
|
1131
|
-
("KiUserExceptionDispatcher",
|
|
1132
|
-
("StackBase",
|
|
1133
|
-
("StackLimit",
|
|
1134
|
-
("Reserved",
|
|
1201
|
+
("Thread", DWORD64),
|
|
1202
|
+
("ThCallbackStack", DWORD),
|
|
1203
|
+
("ThCallbackBStore", DWORD),
|
|
1204
|
+
("NextCallback", DWORD),
|
|
1205
|
+
("FramePointer", DWORD),
|
|
1206
|
+
("KiCallUserMode", DWORD64),
|
|
1207
|
+
("KeUserCallbackDispatcher", DWORD64),
|
|
1208
|
+
("SystemRangeStart", DWORD64),
|
|
1209
|
+
("KiUserExceptionDispatcher", DWORD64),
|
|
1210
|
+
("StackBase", DWORD64),
|
|
1211
|
+
("StackLimit", DWORD64),
|
|
1212
|
+
("Reserved", DWORD64 * 5),
|
|
1135
1213
|
]
|
|
1214
|
+
|
|
1215
|
+
|
|
1136
1216
|
PKDHELP64 = POINTER(KDHELP64)
|
|
1137
1217
|
|
|
1138
|
-
|
|
1218
|
+
|
|
1219
|
+
# ===============================================================================
|
|
1139
1220
|
# typedef struct _tagSTACKFRAME64 {
|
|
1140
1221
|
# ADDRESS64 AddrPC;
|
|
1141
1222
|
# ADDRESS64 AddrReturn;
|
|
@@ -1149,24 +1230,26 @@ PKDHELP64 = POINTER(KDHELP64)
|
|
|
1149
1230
|
# DWORD64 Reserved[3];
|
|
1150
1231
|
# KDHELP64 KdHelp;
|
|
1151
1232
|
# } STACKFRAME64, *LPSTACKFRAME64;
|
|
1152
|
-
|
|
1233
|
+
# ===============================================================================
|
|
1153
1234
|
class STACKFRAME64(Structure):
|
|
1154
1235
|
_fields_ = [
|
|
1155
|
-
("AddrPC",
|
|
1156
|
-
("AddrReturn",
|
|
1157
|
-
("AddrFrame",
|
|
1158
|
-
("AddrStack",
|
|
1159
|
-
("AddrBStore",
|
|
1160
|
-
("FuncTableEntry",
|
|
1161
|
-
("Params",
|
|
1162
|
-
("Far",
|
|
1163
|
-
("Virtual",
|
|
1164
|
-
("Reserved",
|
|
1165
|
-
("KdHelp",
|
|
1236
|
+
("AddrPC", ADDRESS64),
|
|
1237
|
+
("AddrReturn", ADDRESS64),
|
|
1238
|
+
("AddrFrame", ADDRESS64),
|
|
1239
|
+
("AddrStack", ADDRESS64),
|
|
1240
|
+
("AddrBStore", ADDRESS64),
|
|
1241
|
+
("FuncTableEntry", PVOID),
|
|
1242
|
+
("Params", DWORD64 * 4),
|
|
1243
|
+
("Far", BOOL),
|
|
1244
|
+
("Virtual", BOOL),
|
|
1245
|
+
("Reserved", DWORD64 * 3),
|
|
1246
|
+
("KdHelp", KDHELP64),
|
|
1166
1247
|
]
|
|
1248
|
+
|
|
1249
|
+
|
|
1167
1250
|
LPSTACKFRAME64 = POINTER(STACKFRAME64)
|
|
1168
1251
|
|
|
1169
|
-
|
|
1252
|
+
# ===============================================================================
|
|
1170
1253
|
# BOOL CALLBACK ReadProcessMemoryProc64(
|
|
1171
1254
|
# __in HANDLE hProcess,
|
|
1172
1255
|
# __in DWORD64 lpBaseAddress,
|
|
@@ -1174,39 +1257,40 @@ LPSTACKFRAME64 = POINTER(STACKFRAME64)
|
|
|
1174
1257
|
# __in DWORD nSize,
|
|
1175
1258
|
# __out LPDWORD lpNumberOfBytesRead
|
|
1176
1259
|
# );
|
|
1177
|
-
|
|
1260
|
+
# ===============================================================================
|
|
1178
1261
|
PREAD_PROCESS_MEMORY_ROUTINE64 = WINFUNCTYPE(BOOL, HANDLE, DWORD64, PVOID, DWORD, LPDWORD)
|
|
1179
1262
|
|
|
1180
|
-
|
|
1263
|
+
# ===============================================================================
|
|
1181
1264
|
# PVOID CALLBACK FunctionTableAccessProc64(
|
|
1182
1265
|
# __in HANDLE hProcess,
|
|
1183
1266
|
# __in DWORD64 AddrBase
|
|
1184
1267
|
# );
|
|
1185
|
-
|
|
1268
|
+
# ===============================================================================
|
|
1186
1269
|
PFUNCTION_TABLE_ACCESS_ROUTINE64 = WINFUNCTYPE(PVOID, HANDLE, DWORD64)
|
|
1187
1270
|
|
|
1188
|
-
|
|
1271
|
+
# ===============================================================================
|
|
1189
1272
|
# DWORD64 CALLBACK GetModuleBaseProc64(
|
|
1190
1273
|
# __in HANDLE hProcess,
|
|
1191
1274
|
# __in DWORD64 Address
|
|
1192
1275
|
# );
|
|
1193
|
-
|
|
1276
|
+
# ===============================================================================
|
|
1194
1277
|
PGET_MODULE_BASE_ROUTINE64 = WINFUNCTYPE(DWORD64, HANDLE, DWORD64)
|
|
1195
1278
|
|
|
1196
|
-
|
|
1279
|
+
# ===============================================================================
|
|
1197
1280
|
# DWORD64 CALLBACK GetModuleBaseProc64(
|
|
1198
1281
|
# __in HANDLE hProcess,
|
|
1199
1282
|
# __in DWORD64 Address
|
|
1200
1283
|
# );
|
|
1201
|
-
|
|
1284
|
+
# ===============================================================================
|
|
1202
1285
|
PTRANSLATE_ADDRESS_ROUTINE64 = WINFUNCTYPE(DWORD64, HANDLE, DWORD64)
|
|
1203
1286
|
|
|
1204
1287
|
# Valid machine types for StackWalk64 function
|
|
1205
|
-
IMAGE_FILE_MACHINE_I386 =
|
|
1206
|
-
IMAGE_FILE_MACHINE_IA64 = 0x0200
|
|
1207
|
-
IMAGE_FILE_MACHINE_AMD64 = 0x8664
|
|
1288
|
+
IMAGE_FILE_MACHINE_I386 = 0x014C # Intel x86
|
|
1289
|
+
IMAGE_FILE_MACHINE_IA64 = 0x0200 # Intel Itanium Processor Family (IPF)
|
|
1290
|
+
IMAGE_FILE_MACHINE_AMD64 = 0x8664 # x64 (AMD64 or EM64T)
|
|
1291
|
+
|
|
1208
1292
|
|
|
1209
|
-
|
|
1293
|
+
# ===============================================================================
|
|
1210
1294
|
# BOOL WINAPI StackWalk64(
|
|
1211
1295
|
# __in DWORD MachineType,
|
|
1212
1296
|
# __in HANDLE hProcess,
|
|
@@ -1218,18 +1302,30 @@ IMAGE_FILE_MACHINE_AMD64 = 0x8664 #x64 (AMD64 or EM64T)
|
|
|
1218
1302
|
# __in_opt PGET_MODULE_BASE_ROUTINE64 GetModuleBaseRoutine,
|
|
1219
1303
|
# __in_opt PTRANSLATE_ADDRESS_ROUTINE64 TranslateAddress
|
|
1220
1304
|
# );
|
|
1221
|
-
|
|
1222
|
-
def StackWalk64(
|
|
1223
|
-
|
|
1224
|
-
|
|
1225
|
-
|
|
1226
|
-
|
|
1305
|
+
# ===============================================================================
|
|
1306
|
+
def StackWalk64(
|
|
1307
|
+
MachineType,
|
|
1308
|
+
hProcess,
|
|
1309
|
+
hThread,
|
|
1310
|
+
StackFrame,
|
|
1311
|
+
ContextRecord=None,
|
|
1312
|
+
ReadMemoryRoutine=None,
|
|
1313
|
+
FunctionTableAccessRoutine=None,
|
|
1314
|
+
GetModuleBaseRoutine=None,
|
|
1315
|
+
TranslateAddress=None,
|
|
1316
|
+
):
|
|
1227
1317
|
_StackWalk64 = windll.dbghelp.StackWalk64
|
|
1228
|
-
_StackWalk64.argtypes = [
|
|
1229
|
-
|
|
1230
|
-
|
|
1231
|
-
|
|
1232
|
-
|
|
1318
|
+
_StackWalk64.argtypes = [
|
|
1319
|
+
DWORD,
|
|
1320
|
+
HANDLE,
|
|
1321
|
+
HANDLE,
|
|
1322
|
+
LPSTACKFRAME64,
|
|
1323
|
+
PVOID,
|
|
1324
|
+
PREAD_PROCESS_MEMORY_ROUTINE64,
|
|
1325
|
+
PFUNCTION_TABLE_ACCESS_ROUTINE64,
|
|
1326
|
+
PGET_MODULE_BASE_ROUTINE64,
|
|
1327
|
+
PTRANSLATE_ADDRESS_ROUTINE64,
|
|
1328
|
+
]
|
|
1233
1329
|
_StackWalk64.restype = bool
|
|
1234
1330
|
|
|
1235
1331
|
pReadMemoryRoutine = None
|
|
@@ -1252,7 +1348,7 @@ def StackWalk64(MachineType, hProcess, hThread, StackFrame,
|
|
|
1252
1348
|
|
|
1253
1349
|
pTranslateAddress = None
|
|
1254
1350
|
if TranslateAddress:
|
|
1255
|
-
pTranslateAddress =
|
|
1351
|
+
pTranslateAddress = PTRANSLATE_ADDRESS_ROUTINE64(TranslateAddress)
|
|
1256
1352
|
else:
|
|
1257
1353
|
pTranslateAddress = ctypes.cast(None, PTRANSLATE_ADDRESS_ROUTINE64)
|
|
1258
1354
|
|
|
@@ -1261,17 +1357,25 @@ def StackWalk64(MachineType, hProcess, hThread, StackFrame,
|
|
|
1261
1357
|
ContextRecord = GetThreadContext(hThread, raw=True)
|
|
1262
1358
|
pContextRecord = PCONTEXT(ContextRecord)
|
|
1263
1359
|
|
|
1264
|
-
#this function *DOESN'T* set last error [GetLastError()] properly most of the time.
|
|
1265
|
-
ret = _StackWalk64(
|
|
1266
|
-
|
|
1267
|
-
|
|
1268
|
-
|
|
1360
|
+
# this function *DOESN'T* set last error [GetLastError()] properly most of the time.
|
|
1361
|
+
ret = _StackWalk64(
|
|
1362
|
+
MachineType,
|
|
1363
|
+
hProcess,
|
|
1364
|
+
hThread,
|
|
1365
|
+
byref(StackFrame),
|
|
1366
|
+
pContextRecord,
|
|
1367
|
+
pReadMemoryRoutine,
|
|
1368
|
+
pFunctionTableAccessRoutine,
|
|
1369
|
+
pGetModuleBaseRoutine,
|
|
1370
|
+
pTranslateAddress,
|
|
1371
|
+
)
|
|
1269
1372
|
|
|
1270
1373
|
return ret
|
|
1271
1374
|
|
|
1272
|
-
|
|
1375
|
+
|
|
1376
|
+
# ==============================================================================
|
|
1273
1377
|
# This calculates the list of exported symbols.
|
|
1274
1378
|
_all = set(vars().keys()).difference(_all)
|
|
1275
|
-
__all__ = [_x for _x in _all if not _x.startswith(
|
|
1379
|
+
__all__ = [_x for _x in _all if not _x.startswith("_")]
|
|
1276
1380
|
__all__.sort()
|
|
1277
|
-
|
|
1381
|
+
# ==============================================================================
|