PyDev attach to process fails with `ModuleNotFoundError: No module named 'add_code_to_python_process'`
PyDev attach to process fails with `ModuleNotFoundError: No module named 'add_code_to_python_process'`
我正在尝试使用 PyDev 附加到 MS-Windows10 上的进程。实际上,更准确地说,我正在这样做。它工作得很好,我非常重视它,但现在不起作用,我想知道为什么。
我总是对同一个进程执行此操作,它是一个用 C++ 编写的进程,在内部将 python 解释器加载到 运行 Python 插件代码。我过去一直很高兴地破解插件代码并使用 PyDev 进行调试。
2020 年 12 月,我再试一次,但在尝试附加到同一进程时出现此错误:
Traceback (most recent call last):
File "E:\Util\Eclipse\dropins\PyDev 8.1.0\plugins\org.python.pydev.core_8.1.0.202012051215\pysrc\pydevd_attach_to_process\attach_pydevd.py", line 72, in <module>
main(process_command_line(sys.argv[1:]))
File "E:\Util\Eclipse\dropins\PyDev 8.1.0\plugins\org.python.pydev.core_8.1.0.202012051215\pysrc\pydevd_attach_to_process\attach_pydevd.py", line 41, in main
import add_code_to_python_process
ModuleNotFoundError: No module named 'add_code_to_python_process'
Process finished with exitValue: 1
我上次成功完成此操作是在 2020 年 10 月左右。我不需要这么多。但是当我这样做的时候,它非常有用。
错误消息对我帮助不大。我在网上搜索了所有之前的笔记,但没有找到任何线索。
当然,在任何“曾经有效,但现在无效”的情况下,至关重要的是“发生了什么变化”。嗯,有几件好事,尤其是我正在调试的应用程序正在不断开发中,我会定期获取新版本并 运行ning 它们。此外,我可能已经升级了 Eclipse,并且肯定升级了 PyDev。
事实上,我怀疑 PyDev 有一些奇怪的损坏,我删除了它并使用 Eclipse dropins 方法安装了最新的一个,我一直在这里使用它并且工作正常。
该消息表明这在 Eclipse/PyDev 端失败,而不是目标进程。具体来说:
E:\Util\Eclipse\dropins\PyDev 8.1.0\plugins\org.python.pydev.core_8.1.0.202012051215\pysrc\pydevd_attach_to_process\attach_pydevd.py
在第 41 行尝试 import add_code_to_python_process
并找不到模块,这似乎完全是 PyDev 内部问题。
但是检查 PyDev 安装:
E:\> tree "E:\Util\Eclipse\dropins\PyDev 8.1.0\plugins\org.python.pydev.core_8.1.0.202012051215\pysrc" /f
Folder PATH listing for volume DATA
Volume serial number is 646C-4A23
E:\UTIL\ECLIPSE\DROPINS\PYDEV 8.1.0\PLUGINS\ORG.PYTHON.PYDEV.CORE_8.1.0.202012051215\PYSRC
│ conftest.py
│ interpreterInfo.py
│ LICENSE
│ MANIFEST.in
│ pycompletionserver.py
│ pydevconsole.py
│ pydevd.py
│ pydevd_file_utils.py
│ pydevd_tracing.py
│ pydev_app_engine_debug_startup.py
│ pydev_coverage.py
│ pydev_pysrc.py
│ pydev_run_in_console.py
│ pytest.ini
│ README.rst
│ runfiles.py
│ setup.py
│ setup_cython.py
│
├───.github
│ │ install_and_run_debug_py.sh
│ │
│ └───workflows
│ pydevd-tests-python.yml
│
├───build_tools
│ build.py
│ build_binaries_osx.py
│ build_binaries_windows.py
│ check_no_git_modifications.py
│ generate_code.py
│ names_to_rename.py
│ pydevd_release_process.txt
│ rename_pep8.py
│
├───pydevd_attach_to_process
│ │ add_code_to_python_process.py
│ │ attach_amd64.dll
│ │ attach_linux_amd64.so
│ │ attach_linux_x86.so
│ │ attach_pydevd.py
│ │ attach_script.py
│ │ attach_x86.dll
│ │ attach_x86.dylib
│ │ attach_x86_64.dylib
│ │ inject_dll_amd64.exe
│ │ inject_dll_x86.exe
│ │ README.txt
│ │ run_code_on_dllmain_amd64.dll
│ │ run_code_on_dllmain_x86.dll
│ │ _always_live_program.py
│ │ _check.py
│ │ _test_attach_to_process.py
│ │ _test_attach_to_process_linux.py
│ │
│ ├───common
│ │ python.h
│ │ py_custom_pyeval_settrace.hpp
│ │ py_settrace.hpp
│ │ py_utils.hpp
│ │ py_version.hpp
│ │ ref_utils.hpp
│ │
│ ├───linux_and_mac
│ │ attach.cpp
│ │ compile_linux.sh
│ │ compile_mac.sh
│ │ lldb_prepare.py
│ │
│ ├───winappdbg
│ │ │ breakpoint.py
│ │ │ compat.py
│ │ │ crash.py
│ │ │ debug.py
│ │ │ disasm.py
│ │ │ event.py
│ │ │ interactive.py
│ │ │ module.py
│ │ │ process.py
│ │ │ registry.py
│ │ │ search.py
│ │ │ sql.py
│ │ │ system.py
│ │ │ textio.py
│ │ │ thread.py
│ │ │ util.py
│ │ │ window.py
│ │ │ __init__.py
│ │ │
│ │ ├───plugins
│ │ │ do_example.py
│ │ │ do_exchain.py
│ │ │ do_exploitable.py
│ │ │ do_symfix.py
│ │ │ README
│ │ │ __init__.py
│ │ │
│ │ └───win32
│ │ advapi32.py
│ │ context_amd64.py
│ │ context_i386.py
│ │ dbghelp.py
│ │ defines.py
│ │ gdi32.py
│ │ kernel32.py
│ │ ntdll.py
│ │ peb_teb.py
│ │ psapi.py
│ │ shell32.py
│ │ shlwapi.py
│ │ user32.py
│ │ version.py
│ │ wtsapi32.py
│ │ __init__.py
│ │
│ └───windows
│ attach.cpp
│ attach.h
│ compile_windows.bat
│ inject_dll.cpp
│ py_win_helpers.hpp
│ run_code_in_memory.hpp
│ run_code_on_dllmain.cpp
│ stdafx.cpp
│ stdafx.h
│ targetver.h
│
├───pydevd_concurrency_analyser
│ pydevd_concurrency_logger.py
│ pydevd_thread_wrappers.py
│ __init__.py
│
├───pydevd_plugins
│ │ django_debug.py
│ │ jinja2_debug.py
│ │ __init__.py
│ │
│ └───extensions
│ │ README.md
│ │ __init__.py
│ │
│ └───types
│ pydevd_helpers.py
│ pydevd_plugins_django_form_str.py
│ pydevd_plugin_numpy_types.py
│ __init__.py
│
├───pydev_ipython
│ inputhook.py
│ inputhookglut.py
│ inputhookgtk.py
│ inputhookgtk3.py
│ inputhookpyglet.py
│ inputhookqt4.py
│ inputhookqt5.py
│ inputhooktk.py
│ inputhookwx.py
│ matplotlibtools.py
│ qt.py
│ qt_for_kernel.py
│ qt_loaders.py
│ README
│ version.py
│ __init__.py
│
├───pydev_sitecustomize
│ │ sitecustomize.py
│ │ __not_in_default_pythonpath.txt
│ │
│ └───__pycache__
│ sitecustomize.cpython-38.pyc
│
├───stubs
│ pycompletion.py
│ _django_manager_body.py
│ _get_tips.py
│
├───third_party
│ │ cython_json.py
│ │ tests_cython_json.py
│ │
│ ├───isort_container
│ │ ├───backports
│ │ │ functools_lru_cache.py
│ │ │ __init__.py
│ │ │
│ │ └───isort
│ │ finders.py
│ │ hooks.py
│ │ isort.py
│ │ main.py
│ │ natural.py
│ │ pie_slice.py
│ │ pylama_isort.py
│ │ settings.py
│ │ utils.py
│ │ __init__.py
│ │ __main__.py
│ │
│ ├───pep8
│ │ │ autopep8.py
│ │ │ pycodestyle.py
│ │ │
│ │ └───lib2to3
│ │ └───lib2to3
│ │ │ btm_matcher.py
│ │ │ btm_utils.py
│ │ │ fixer_base.py
│ │ │ fixer_util.py
│ │ │ Grammar.txt
│ │ │ main.py
│ │ │ patcomp.py
│ │ │ PatternGrammar.txt
│ │ │ pygram.py
│ │ │ pytree.py
│ │ │ refactor.py
│ │ │ __init__.py
│ │ │ __main__.py
│ │ │
│ │ ├───fixes
│ │ │ fix_apply.py
│ │ │ fix_basestring.py
│ │ │ fix_buffer.py
│ │ │ fix_callable.py
│ │ │ fix_dict.py
│ │ │ fix_except.py
│ │ │ fix_exec.py
│ │ │ fix_execfile.py
│ │ │ fix_exitfunc.py
│ │ │ fix_filter.py
│ │ │ fix_funcattrs.py
│ │ │ fix_future.py
│ │ │ fix_getcwdu.py
│ │ │ fix_has_key.py
│ │ │ fix_idioms.py
│ │ │ fix_import.py
│ │ │ fix_imports.py
│ │ │ fix_imports2.py
│ │ │ fix_input.py
│ │ │ fix_intern.py
│ │ │ fix_isinstance.py
│ │ │ fix_itertools.py
│ │ │ fix_itertools_imports.py
│ │ │ fix_long.py
│ │ │ fix_map.py
│ │ │ fix_metaclass.py
│ │ │ fix_methodattrs.py
│ │ │ fix_ne.py
│ │ │ fix_next.py
│ │ │ fix_nonzero.py
│ │ │ fix_numliterals.py
│ │ │ fix_operator.py
│ │ │ fix_paren.py
│ │ │ fix_print.py
│ │ │ fix_raise.py
│ │ │ fix_raw_input.py
│ │ │ fix_reduce.py
│ │ │ fix_renames.py
│ │ │ fix_repr.py
│ │ │ fix_set_literal.py
│ │ │ fix_standarderror.py
│ │ │ fix_sys_exc.py
│ │ │ fix_throw.py
│ │ │ fix_tuple_params.py
│ │ │ fix_types.py
│ │ │ fix_unicode.py
│ │ │ fix_urllib.py
│ │ │ fix_ws_comma.py
│ │ │ fix_xrange.py
│ │ │ fix_xreadlines.py
│ │ │ fix_zip.py
│ │ │ __init__.py
│ │ │
│ │ └───pgen2
│ │ conv.py
│ │ driver.py
│ │ grammar.py
│ │ literals.py
│ │ parse.py
│ │ pgen.py
│ │ token.py
│ │ tokenize.py
│ │ __init__.py
│ │
│ └───wrapped_for_pydev
│ │ not_in_default_pythonpath.txt
│ │
│ └───ctypes
│ │ ctypes-README.txt
│ │ util.py
│ │ wintypes.py
│ │ _ctypes.dll
│ │ _endian.py
│ │ __init__.py
│ │
│ └───macholib
│ dyld.py
│ dylib.py
│ framework.py
│ __init__.py
│
├───_pydevd_bundle
│ │ pydevconsole_code_for_ironpython.py
│ │ pydevd_additional_thread_info.py
│ │ pydevd_additional_thread_info_regular.py
│ │ pydevd_api.py
│ │ pydevd_breakpoints.py
│ │ pydevd_code_to_source.py
│ │ pydevd_collect_bytecode_info.py
│ │ pydevd_comm.py
│ │ pydevd_command_line_handling.py
│ │ pydevd_comm_constants.py
│ │ pydevd_console.py
│ │ pydevd_constants.py
│ │ pydevd_custom_frames.py
│ │ pydevd_cython.c
│ │ pydevd_cython.pxd
│ │ pydevd_cython.pyx
│ │ pydevd_cython_win32_27_32.pyd
│ │ pydevd_cython_win32_27_64.pyd
│ │ pydevd_cython_win32_36_32.cp36-win32.pyd
│ │ pydevd_cython_win32_36_64.cp36-win_amd64.pyd
│ │ pydevd_cython_win32_37_32.cp37-win32.pyd
│ │ pydevd_cython_win32_37_64.cp37-win_amd64.pyd
│ │ pydevd_cython_win32_38_32.cp38-win32.pyd
│ │ pydevd_cython_win32_38_64.cp38-win_amd64.pyd
│ │ pydevd_cython_win32_39_32.cp39-win32.pyd
│ │ pydevd_cython_win32_39_64.cp39-win_amd64.pyd
│ │ pydevd_cython_wrapper.py
│ │ pydevd_daemon_thread.py
│ │ pydevd_defaults.py
│ │ pydevd_dont_trace.py
│ │ pydevd_dont_trace_files.py
│ │ pydevd_exec.py
│ │ pydevd_exec2.py
│ │ pydevd_extension_api.py
│ │ pydevd_extension_utils.py
│ │ pydevd_filtering.py
│ │ pydevd_frame.py
│ │ pydevd_frame_utils.py
│ │ pydevd_import_class.py
│ │ pydevd_io.py
│ │ pydevd_json_debug_options.py
│ │ pydevd_net_command.py
│ │ pydevd_net_command_factory_json.py
│ │ pydevd_net_command_factory_xml.py
│ │ pydevd_plugin_utils.py
│ │ pydevd_process_net_command.py
│ │ pydevd_process_net_command_json.py
│ │ pydevd_referrers.py
│ │ pydevd_reload.py
│ │ pydevd_resolver.py
│ │ pydevd_safe_repr.py
│ │ pydevd_save_locals.py
│ │ pydevd_signature.py
│ │ pydevd_source_mapping.py
│ │ pydevd_stackless.py
│ │ pydevd_suspended_frames.py
│ │ pydevd_thread_lifecycle.py
│ │ pydevd_timeout.py
│ │ pydevd_traceproperty.py
│ │ pydevd_trace_api.py
│ │ pydevd_trace_dispatch.py
│ │ pydevd_trace_dispatch_regular.py
│ │ pydevd_utils.py
│ │ pydevd_vars.py
│ │ pydevd_vm_type.py
│ │ pydevd_xml.py
│ │ __init__.py
│ │
│ ├───_debug_adapter
│ │ debugProtocol.json
│ │ debugProtocolCustom.json
│ │ pydevd_base_schema.py
│ │ pydevd_schema.py
│ │ pydevd_schema_log.py
│ │ __init__.py
│ │ __main__pydevd_gen_debug_adapter_protocol.py
│ │
│ └───__pycache__
│ pydevd_comm_constants.cpython-38.pyc
│ pydevd_constants.cpython-38.pyc
│ pydevd_dont_trace.cpython-38.pyc
│ pydevd_frame_utils.cpython-38.pyc
│ pydevd_utils.cpython-38.pyc
│ pydevd_vm_type.cpython-38.pyc
│ __init__.cpython-38.pyc
│
├───_pydevd_frame_eval
│ │ pydevd_frame_evaluator.c
│ │ pydevd_frame_evaluator.cp38-win32.pyd
│ │ pydevd_frame_evaluator.cp38-win_amd64.pyd
│ │ pydevd_frame_evaluator.cp39-win32.pyd
│ │ pydevd_frame_evaluator.cp39-win_amd64.pyd
│ │ pydevd_frame_evaluator.pxd
│ │ pydevd_frame_evaluator.pyx
│ │ pydevd_frame_evaluator.template.pyx
│ │ pydevd_frame_evaluator_win32_36_32.cp36-win32.pyd
│ │ pydevd_frame_evaluator_win32_36_64.cp36-win_amd64.pyd
│ │ pydevd_frame_evaluator_win32_37_32.cp37-win32.pyd
│ │ pydevd_frame_evaluator_win32_37_64.cp37-win_amd64.pyd
│ │ pydevd_frame_eval_cython_wrapper.py
│ │ pydevd_frame_eval_main.py
│ │ pydevd_frame_tracing.py
│ │ pydevd_modify_bytecode.py
│ │ release_mem.h
│ │ __init__.py
│ │
│ ├───vendored
│ │ │ pydevd_fix_code.py
│ │ │ README.txt
│ │ │ __init__.py
│ │ │
│ │ └───bytecode
│ │ │ bytecode.py
│ │ │ cfg.py
│ │ │ concrete.py
│ │ │ flags.py
│ │ │ instr.py
│ │ │ peephole_opt.py
│ │ │ __init__.py
│ │ │
│ │ └───tests
│ │ test_bytecode.py
│ │ test_cfg.py
│ │ test_code.py
│ │ test_concrete.py
│ │ test_flags.py
│ │ test_instr.py
│ │ test_misc.py
│ │ test_peephole_opt.py
│ │ __init__.py
│ │
│ └───__pycache__
│ __init__.cpython-38.pyc
│
├───_pydev_bundle
│ │ pydev_console_utils.py
│ │ pydev_imports.py
│ │ pydev_import_hook.py
│ │ pydev_ipython_console.py
│ │ pydev_ipython_console_011.py
│ │ pydev_is_thread_alive.py
│ │ pydev_localhost.py
│ │ pydev_log.py
│ │ pydev_monkey.py
│ │ pydev_monkey_qt.py
│ │ pydev_override.py
│ │ pydev_umd.py
│ │ pydev_versioncheck.py
│ │ _pydev_calltip_util.py
│ │ _pydev_completer.py
│ │ _pydev_filesystem_encoding.py
│ │ _pydev_getopt.py
│ │ _pydev_imports_tipper.py
│ │ _pydev_jy_imports_tipper.py
│ │ _pydev_log.py
│ │ _pydev_tipper_common.py
│ │ __init__.py
│ │
│ └───__pycache__
│ pydev_is_thread_alive.cpython-38.pyc
│ pydev_localhost.cpython-38.pyc
│ pydev_log.cpython-38.pyc
│ _pydev_filesystem_encoding.cpython-38.pyc
│ _pydev_imports_tipper.cpython-38.pyc
│ _pydev_log.cpython-38.pyc
│ _pydev_tipper_common.cpython-38.pyc
│ __init__.cpython-38.pyc
│
├───_pydev_imps
│ │ _pydev_BaseHTTPServer.py
│ │ _pydev_execfile.py
│ │ _pydev_inspect.py
│ │ _pydev_pkgutil_old.py
│ │ _pydev_saved_modules.py
│ │ _pydev_SimpleXMLRPCServer.py
│ │ _pydev_SocketServer.py
│ │ _pydev_sys_patch.py
│ │ _pydev_xmlrpclib.py
│ │ __init__.py
│ │
│ └───__pycache__
│ _pydev_saved_modules.cpython-38.pyc
│ __init__.cpython-38.pyc
│
├───_pydev_runfiles
│ pydev_runfiles.py
│ pydev_runfiles_coverage.py
│ pydev_runfiles_nose.py
│ pydev_runfiles_parallel.py
│ pydev_runfiles_parallel_client.py
│ pydev_runfiles_pytest2.py
│ pydev_runfiles_unittest.py
│ pydev_runfiles_xml_rpc.py
│ __init__.py
│
└───__pycache__
pydevd_file_utils.cpython-38.pyc
然后我们可以看到 add_code_to_python_process.py
看起来应该在 attach_pydevd.py
中正常导入,但顺便说一句,它总是这样。
现在我也检查了目标进程和配置的 Python intereter,我确保:
- 使用与我的目标进程 运行ning 完全相同的解释器。该目标进程与它自己的 python 解释器捆绑在一起,并使用它自己的站点包文件夹等。一切都没有问题,因为我只是在 PyDev 解释器下配置该解释器。
- 我将 pysrcs 目录添加到该解释器的 PYTHONPATH。
为了说明(目标应用程序文件夹已删除,因为它不相关):
错误的性质表明存在 PyrDev 配置问题,即 PyDev 本身 运行 不正确,但很难看出如何,全新安装并且一切看起来都很好。 PyDev(像任何调试器一样)有点复杂,但我已经阅读了我能阅读的内容并且 none 更聪明。这不是 PyDev 中的错误(或者我会提交一个错误),因为它正在工作(我承认使用 PyDev 的先前版本,因为我已经升级,但是 PyDev 升级只是我努力的一部分 diagnose/fix 这个,简而言之,这个错误首先出现在我安装的早期版本的 PyDev 上,我最后一次努力(一个月前或 s)将 PyDev 连接到这个相同的目标进程。
这里真正的症结在于解释回溯和错误消息。
鉴于它与 attach_pydevd.py
并排并且考虑到 attach_pydevd.py
作为 __main__
模块执行(理论上),它没有找到它真的有点奇怪能够找到它......但实践有时似乎有所不同;)
因此,尝试执行以下操作:打开 attach_pydevd.py
并添加 sys.path.append(os.path.dirname(__file__))
作为 def main(setup):
的第一行,看看它是否解决了您的问题(如果可以,我也会在调试器端进行修复。
我正在尝试使用 PyDev 附加到 MS-Windows10 上的进程。实际上,更准确地说,我正在这样做。它工作得很好,我非常重视它,但现在不起作用,我想知道为什么。
我总是对同一个进程执行此操作,它是一个用 C++ 编写的进程,在内部将 python 解释器加载到 运行 Python 插件代码。我过去一直很高兴地破解插件代码并使用 PyDev 进行调试。
2020 年 12 月,我再试一次,但在尝试附加到同一进程时出现此错误:
Traceback (most recent call last):
File "E:\Util\Eclipse\dropins\PyDev 8.1.0\plugins\org.python.pydev.core_8.1.0.202012051215\pysrc\pydevd_attach_to_process\attach_pydevd.py", line 72, in <module>
main(process_command_line(sys.argv[1:]))
File "E:\Util\Eclipse\dropins\PyDev 8.1.0\plugins\org.python.pydev.core_8.1.0.202012051215\pysrc\pydevd_attach_to_process\attach_pydevd.py", line 41, in main
import add_code_to_python_process
ModuleNotFoundError: No module named 'add_code_to_python_process'
Process finished with exitValue: 1
我上次成功完成此操作是在 2020 年 10 月左右。我不需要这么多。但是当我这样做的时候,它非常有用。
错误消息对我帮助不大。我在网上搜索了所有之前的笔记,但没有找到任何线索。
当然,在任何“曾经有效,但现在无效”的情况下,至关重要的是“发生了什么变化”。嗯,有几件好事,尤其是我正在调试的应用程序正在不断开发中,我会定期获取新版本并 运行ning 它们。此外,我可能已经升级了 Eclipse,并且肯定升级了 PyDev。
事实上,我怀疑 PyDev 有一些奇怪的损坏,我删除了它并使用 Eclipse dropins 方法安装了最新的一个,我一直在这里使用它并且工作正常。
该消息表明这在 Eclipse/PyDev 端失败,而不是目标进程。具体来说:
E:\Util\Eclipse\dropins\PyDev 8.1.0\plugins\org.python.pydev.core_8.1.0.202012051215\pysrc\pydevd_attach_to_process\attach_pydevd.py
在第 41 行尝试 import add_code_to_python_process
并找不到模块,这似乎完全是 PyDev 内部问题。
但是检查 PyDev 安装:
E:\> tree "E:\Util\Eclipse\dropins\PyDev 8.1.0\plugins\org.python.pydev.core_8.1.0.202012051215\pysrc" /f
Folder PATH listing for volume DATA
Volume serial number is 646C-4A23
E:\UTIL\ECLIPSE\DROPINS\PYDEV 8.1.0\PLUGINS\ORG.PYTHON.PYDEV.CORE_8.1.0.202012051215\PYSRC
│ conftest.py
│ interpreterInfo.py
│ LICENSE
│ MANIFEST.in
│ pycompletionserver.py
│ pydevconsole.py
│ pydevd.py
│ pydevd_file_utils.py
│ pydevd_tracing.py
│ pydev_app_engine_debug_startup.py
│ pydev_coverage.py
│ pydev_pysrc.py
│ pydev_run_in_console.py
│ pytest.ini
│ README.rst
│ runfiles.py
│ setup.py
│ setup_cython.py
│
├───.github
│ │ install_and_run_debug_py.sh
│ │
│ └───workflows
│ pydevd-tests-python.yml
│
├───build_tools
│ build.py
│ build_binaries_osx.py
│ build_binaries_windows.py
│ check_no_git_modifications.py
│ generate_code.py
│ names_to_rename.py
│ pydevd_release_process.txt
│ rename_pep8.py
│
├───pydevd_attach_to_process
│ │ add_code_to_python_process.py
│ │ attach_amd64.dll
│ │ attach_linux_amd64.so
│ │ attach_linux_x86.so
│ │ attach_pydevd.py
│ │ attach_script.py
│ │ attach_x86.dll
│ │ attach_x86.dylib
│ │ attach_x86_64.dylib
│ │ inject_dll_amd64.exe
│ │ inject_dll_x86.exe
│ │ README.txt
│ │ run_code_on_dllmain_amd64.dll
│ │ run_code_on_dllmain_x86.dll
│ │ _always_live_program.py
│ │ _check.py
│ │ _test_attach_to_process.py
│ │ _test_attach_to_process_linux.py
│ │
│ ├───common
│ │ python.h
│ │ py_custom_pyeval_settrace.hpp
│ │ py_settrace.hpp
│ │ py_utils.hpp
│ │ py_version.hpp
│ │ ref_utils.hpp
│ │
│ ├───linux_and_mac
│ │ attach.cpp
│ │ compile_linux.sh
│ │ compile_mac.sh
│ │ lldb_prepare.py
│ │
│ ├───winappdbg
│ │ │ breakpoint.py
│ │ │ compat.py
│ │ │ crash.py
│ │ │ debug.py
│ │ │ disasm.py
│ │ │ event.py
│ │ │ interactive.py
│ │ │ module.py
│ │ │ process.py
│ │ │ registry.py
│ │ │ search.py
│ │ │ sql.py
│ │ │ system.py
│ │ │ textio.py
│ │ │ thread.py
│ │ │ util.py
│ │ │ window.py
│ │ │ __init__.py
│ │ │
│ │ ├───plugins
│ │ │ do_example.py
│ │ │ do_exchain.py
│ │ │ do_exploitable.py
│ │ │ do_symfix.py
│ │ │ README
│ │ │ __init__.py
│ │ │
│ │ └───win32
│ │ advapi32.py
│ │ context_amd64.py
│ │ context_i386.py
│ │ dbghelp.py
│ │ defines.py
│ │ gdi32.py
│ │ kernel32.py
│ │ ntdll.py
│ │ peb_teb.py
│ │ psapi.py
│ │ shell32.py
│ │ shlwapi.py
│ │ user32.py
│ │ version.py
│ │ wtsapi32.py
│ │ __init__.py
│ │
│ └───windows
│ attach.cpp
│ attach.h
│ compile_windows.bat
│ inject_dll.cpp
│ py_win_helpers.hpp
│ run_code_in_memory.hpp
│ run_code_on_dllmain.cpp
│ stdafx.cpp
│ stdafx.h
│ targetver.h
│
├───pydevd_concurrency_analyser
│ pydevd_concurrency_logger.py
│ pydevd_thread_wrappers.py
│ __init__.py
│
├───pydevd_plugins
│ │ django_debug.py
│ │ jinja2_debug.py
│ │ __init__.py
│ │
│ └───extensions
│ │ README.md
│ │ __init__.py
│ │
│ └───types
│ pydevd_helpers.py
│ pydevd_plugins_django_form_str.py
│ pydevd_plugin_numpy_types.py
│ __init__.py
│
├───pydev_ipython
│ inputhook.py
│ inputhookglut.py
│ inputhookgtk.py
│ inputhookgtk3.py
│ inputhookpyglet.py
│ inputhookqt4.py
│ inputhookqt5.py
│ inputhooktk.py
│ inputhookwx.py
│ matplotlibtools.py
│ qt.py
│ qt_for_kernel.py
│ qt_loaders.py
│ README
│ version.py
│ __init__.py
│
├───pydev_sitecustomize
│ │ sitecustomize.py
│ │ __not_in_default_pythonpath.txt
│ │
│ └───__pycache__
│ sitecustomize.cpython-38.pyc
│
├───stubs
│ pycompletion.py
│ _django_manager_body.py
│ _get_tips.py
│
├───third_party
│ │ cython_json.py
│ │ tests_cython_json.py
│ │
│ ├───isort_container
│ │ ├───backports
│ │ │ functools_lru_cache.py
│ │ │ __init__.py
│ │ │
│ │ └───isort
│ │ finders.py
│ │ hooks.py
│ │ isort.py
│ │ main.py
│ │ natural.py
│ │ pie_slice.py
│ │ pylama_isort.py
│ │ settings.py
│ │ utils.py
│ │ __init__.py
│ │ __main__.py
│ │
│ ├───pep8
│ │ │ autopep8.py
│ │ │ pycodestyle.py
│ │ │
│ │ └───lib2to3
│ │ └───lib2to3
│ │ │ btm_matcher.py
│ │ │ btm_utils.py
│ │ │ fixer_base.py
│ │ │ fixer_util.py
│ │ │ Grammar.txt
│ │ │ main.py
│ │ │ patcomp.py
│ │ │ PatternGrammar.txt
│ │ │ pygram.py
│ │ │ pytree.py
│ │ │ refactor.py
│ │ │ __init__.py
│ │ │ __main__.py
│ │ │
│ │ ├───fixes
│ │ │ fix_apply.py
│ │ │ fix_basestring.py
│ │ │ fix_buffer.py
│ │ │ fix_callable.py
│ │ │ fix_dict.py
│ │ │ fix_except.py
│ │ │ fix_exec.py
│ │ │ fix_execfile.py
│ │ │ fix_exitfunc.py
│ │ │ fix_filter.py
│ │ │ fix_funcattrs.py
│ │ │ fix_future.py
│ │ │ fix_getcwdu.py
│ │ │ fix_has_key.py
│ │ │ fix_idioms.py
│ │ │ fix_import.py
│ │ │ fix_imports.py
│ │ │ fix_imports2.py
│ │ │ fix_input.py
│ │ │ fix_intern.py
│ │ │ fix_isinstance.py
│ │ │ fix_itertools.py
│ │ │ fix_itertools_imports.py
│ │ │ fix_long.py
│ │ │ fix_map.py
│ │ │ fix_metaclass.py
│ │ │ fix_methodattrs.py
│ │ │ fix_ne.py
│ │ │ fix_next.py
│ │ │ fix_nonzero.py
│ │ │ fix_numliterals.py
│ │ │ fix_operator.py
│ │ │ fix_paren.py
│ │ │ fix_print.py
│ │ │ fix_raise.py
│ │ │ fix_raw_input.py
│ │ │ fix_reduce.py
│ │ │ fix_renames.py
│ │ │ fix_repr.py
│ │ │ fix_set_literal.py
│ │ │ fix_standarderror.py
│ │ │ fix_sys_exc.py
│ │ │ fix_throw.py
│ │ │ fix_tuple_params.py
│ │ │ fix_types.py
│ │ │ fix_unicode.py
│ │ │ fix_urllib.py
│ │ │ fix_ws_comma.py
│ │ │ fix_xrange.py
│ │ │ fix_xreadlines.py
│ │ │ fix_zip.py
│ │ │ __init__.py
│ │ │
│ │ └───pgen2
│ │ conv.py
│ │ driver.py
│ │ grammar.py
│ │ literals.py
│ │ parse.py
│ │ pgen.py
│ │ token.py
│ │ tokenize.py
│ │ __init__.py
│ │
│ └───wrapped_for_pydev
│ │ not_in_default_pythonpath.txt
│ │
│ └───ctypes
│ │ ctypes-README.txt
│ │ util.py
│ │ wintypes.py
│ │ _ctypes.dll
│ │ _endian.py
│ │ __init__.py
│ │
│ └───macholib
│ dyld.py
│ dylib.py
│ framework.py
│ __init__.py
│
├───_pydevd_bundle
│ │ pydevconsole_code_for_ironpython.py
│ │ pydevd_additional_thread_info.py
│ │ pydevd_additional_thread_info_regular.py
│ │ pydevd_api.py
│ │ pydevd_breakpoints.py
│ │ pydevd_code_to_source.py
│ │ pydevd_collect_bytecode_info.py
│ │ pydevd_comm.py
│ │ pydevd_command_line_handling.py
│ │ pydevd_comm_constants.py
│ │ pydevd_console.py
│ │ pydevd_constants.py
│ │ pydevd_custom_frames.py
│ │ pydevd_cython.c
│ │ pydevd_cython.pxd
│ │ pydevd_cython.pyx
│ │ pydevd_cython_win32_27_32.pyd
│ │ pydevd_cython_win32_27_64.pyd
│ │ pydevd_cython_win32_36_32.cp36-win32.pyd
│ │ pydevd_cython_win32_36_64.cp36-win_amd64.pyd
│ │ pydevd_cython_win32_37_32.cp37-win32.pyd
│ │ pydevd_cython_win32_37_64.cp37-win_amd64.pyd
│ │ pydevd_cython_win32_38_32.cp38-win32.pyd
│ │ pydevd_cython_win32_38_64.cp38-win_amd64.pyd
│ │ pydevd_cython_win32_39_32.cp39-win32.pyd
│ │ pydevd_cython_win32_39_64.cp39-win_amd64.pyd
│ │ pydevd_cython_wrapper.py
│ │ pydevd_daemon_thread.py
│ │ pydevd_defaults.py
│ │ pydevd_dont_trace.py
│ │ pydevd_dont_trace_files.py
│ │ pydevd_exec.py
│ │ pydevd_exec2.py
│ │ pydevd_extension_api.py
│ │ pydevd_extension_utils.py
│ │ pydevd_filtering.py
│ │ pydevd_frame.py
│ │ pydevd_frame_utils.py
│ │ pydevd_import_class.py
│ │ pydevd_io.py
│ │ pydevd_json_debug_options.py
│ │ pydevd_net_command.py
│ │ pydevd_net_command_factory_json.py
│ │ pydevd_net_command_factory_xml.py
│ │ pydevd_plugin_utils.py
│ │ pydevd_process_net_command.py
│ │ pydevd_process_net_command_json.py
│ │ pydevd_referrers.py
│ │ pydevd_reload.py
│ │ pydevd_resolver.py
│ │ pydevd_safe_repr.py
│ │ pydevd_save_locals.py
│ │ pydevd_signature.py
│ │ pydevd_source_mapping.py
│ │ pydevd_stackless.py
│ │ pydevd_suspended_frames.py
│ │ pydevd_thread_lifecycle.py
│ │ pydevd_timeout.py
│ │ pydevd_traceproperty.py
│ │ pydevd_trace_api.py
│ │ pydevd_trace_dispatch.py
│ │ pydevd_trace_dispatch_regular.py
│ │ pydevd_utils.py
│ │ pydevd_vars.py
│ │ pydevd_vm_type.py
│ │ pydevd_xml.py
│ │ __init__.py
│ │
│ ├───_debug_adapter
│ │ debugProtocol.json
│ │ debugProtocolCustom.json
│ │ pydevd_base_schema.py
│ │ pydevd_schema.py
│ │ pydevd_schema_log.py
│ │ __init__.py
│ │ __main__pydevd_gen_debug_adapter_protocol.py
│ │
│ └───__pycache__
│ pydevd_comm_constants.cpython-38.pyc
│ pydevd_constants.cpython-38.pyc
│ pydevd_dont_trace.cpython-38.pyc
│ pydevd_frame_utils.cpython-38.pyc
│ pydevd_utils.cpython-38.pyc
│ pydevd_vm_type.cpython-38.pyc
│ __init__.cpython-38.pyc
│
├───_pydevd_frame_eval
│ │ pydevd_frame_evaluator.c
│ │ pydevd_frame_evaluator.cp38-win32.pyd
│ │ pydevd_frame_evaluator.cp38-win_amd64.pyd
│ │ pydevd_frame_evaluator.cp39-win32.pyd
│ │ pydevd_frame_evaluator.cp39-win_amd64.pyd
│ │ pydevd_frame_evaluator.pxd
│ │ pydevd_frame_evaluator.pyx
│ │ pydevd_frame_evaluator.template.pyx
│ │ pydevd_frame_evaluator_win32_36_32.cp36-win32.pyd
│ │ pydevd_frame_evaluator_win32_36_64.cp36-win_amd64.pyd
│ │ pydevd_frame_evaluator_win32_37_32.cp37-win32.pyd
│ │ pydevd_frame_evaluator_win32_37_64.cp37-win_amd64.pyd
│ │ pydevd_frame_eval_cython_wrapper.py
│ │ pydevd_frame_eval_main.py
│ │ pydevd_frame_tracing.py
│ │ pydevd_modify_bytecode.py
│ │ release_mem.h
│ │ __init__.py
│ │
│ ├───vendored
│ │ │ pydevd_fix_code.py
│ │ │ README.txt
│ │ │ __init__.py
│ │ │
│ │ └───bytecode
│ │ │ bytecode.py
│ │ │ cfg.py
│ │ │ concrete.py
│ │ │ flags.py
│ │ │ instr.py
│ │ │ peephole_opt.py
│ │ │ __init__.py
│ │ │
│ │ └───tests
│ │ test_bytecode.py
│ │ test_cfg.py
│ │ test_code.py
│ │ test_concrete.py
│ │ test_flags.py
│ │ test_instr.py
│ │ test_misc.py
│ │ test_peephole_opt.py
│ │ __init__.py
│ │
│ └───__pycache__
│ __init__.cpython-38.pyc
│
├───_pydev_bundle
│ │ pydev_console_utils.py
│ │ pydev_imports.py
│ │ pydev_import_hook.py
│ │ pydev_ipython_console.py
│ │ pydev_ipython_console_011.py
│ │ pydev_is_thread_alive.py
│ │ pydev_localhost.py
│ │ pydev_log.py
│ │ pydev_monkey.py
│ │ pydev_monkey_qt.py
│ │ pydev_override.py
│ │ pydev_umd.py
│ │ pydev_versioncheck.py
│ │ _pydev_calltip_util.py
│ │ _pydev_completer.py
│ │ _pydev_filesystem_encoding.py
│ │ _pydev_getopt.py
│ │ _pydev_imports_tipper.py
│ │ _pydev_jy_imports_tipper.py
│ │ _pydev_log.py
│ │ _pydev_tipper_common.py
│ │ __init__.py
│ │
│ └───__pycache__
│ pydev_is_thread_alive.cpython-38.pyc
│ pydev_localhost.cpython-38.pyc
│ pydev_log.cpython-38.pyc
│ _pydev_filesystem_encoding.cpython-38.pyc
│ _pydev_imports_tipper.cpython-38.pyc
│ _pydev_log.cpython-38.pyc
│ _pydev_tipper_common.cpython-38.pyc
│ __init__.cpython-38.pyc
│
├───_pydev_imps
│ │ _pydev_BaseHTTPServer.py
│ │ _pydev_execfile.py
│ │ _pydev_inspect.py
│ │ _pydev_pkgutil_old.py
│ │ _pydev_saved_modules.py
│ │ _pydev_SimpleXMLRPCServer.py
│ │ _pydev_SocketServer.py
│ │ _pydev_sys_patch.py
│ │ _pydev_xmlrpclib.py
│ │ __init__.py
│ │
│ └───__pycache__
│ _pydev_saved_modules.cpython-38.pyc
│ __init__.cpython-38.pyc
│
├───_pydev_runfiles
│ pydev_runfiles.py
│ pydev_runfiles_coverage.py
│ pydev_runfiles_nose.py
│ pydev_runfiles_parallel.py
│ pydev_runfiles_parallel_client.py
│ pydev_runfiles_pytest2.py
│ pydev_runfiles_unittest.py
│ pydev_runfiles_xml_rpc.py
│ __init__.py
│
└───__pycache__
pydevd_file_utils.cpython-38.pyc
然后我们可以看到 add_code_to_python_process.py
看起来应该在 attach_pydevd.py
中正常导入,但顺便说一句,它总是这样。
现在我也检查了目标进程和配置的 Python intereter,我确保:
- 使用与我的目标进程 运行ning 完全相同的解释器。该目标进程与它自己的 python 解释器捆绑在一起,并使用它自己的站点包文件夹等。一切都没有问题,因为我只是在 PyDev 解释器下配置该解释器。
- 我将 pysrcs 目录添加到该解释器的 PYTHONPATH。
为了说明(目标应用程序文件夹已删除,因为它不相关):
错误的性质表明存在 PyrDev 配置问题,即 PyDev 本身 运行 不正确,但很难看出如何,全新安装并且一切看起来都很好。 PyDev(像任何调试器一样)有点复杂,但我已经阅读了我能阅读的内容并且 none 更聪明。这不是 PyDev 中的错误(或者我会提交一个错误),因为它正在工作(我承认使用 PyDev 的先前版本,因为我已经升级,但是 PyDev 升级只是我努力的一部分 diagnose/fix 这个,简而言之,这个错误首先出现在我安装的早期版本的 PyDev 上,我最后一次努力(一个月前或 s)将 PyDev 连接到这个相同的目标进程。
这里真正的症结在于解释回溯和错误消息。
鉴于它与 attach_pydevd.py
并排并且考虑到 attach_pydevd.py
作为 __main__
模块执行(理论上),它没有找到它真的有点奇怪能够找到它......但实践有时似乎有所不同;)
因此,尝试执行以下操作:打开 attach_pydevd.py
并添加 sys.path.append(os.path.dirname(__file__))
作为 def main(setup):
的第一行,看看它是否解决了您的问题(如果可以,我也会在调试器端进行修复。