为 WinPE 调试 Python 的最佳方法

Best way to debug Python for WinPE

我正在开发应用程序来部署 Windows OS 和一些带有驱动程序的软件。此应用程序旨在在 WinPE(Windows 预安装环境)中工作,我从笔记本电脑的 USB 记忆棒或 VM 的 VHD 启动。对于开发,我使用安装在桌面 Windows 7 上的 IDE (PyCharm)。 但是,在桌面 PC 上编写代码,然后将其进一步复制到 USB 或 VHD 上,然后 运行 代码在笔记本电脑或 VM 上,无法调试,这真的很不舒服。我发现 Vagrant 可以帮助我 运行 在 VM 中编写代码,但是不可能在 WinPE 中正确安装 SSH。

还有人可以提出其他建议吗?

只找到这样的解决方案: 1.共享你的项目目录,确保桌面和远程代码完全相同。 2. 确保远程计算机(或 VM)可以 ping 通安装了 PyCharm 的桌面 PC。 3. 按照 PyCharm 说明使用其 pydev.egg.

进行远程调试

这不太方便,因为每次要再次调试应用程序时,都应该在远程机器或虚拟机上重新启动应用程序。 PyCharm 远程调试中还有一个错误:如果您在桌面 OS 中使用西里尔文语言环境,您可能会遇到路径映射错误。所以目前我无法正确使用断点。

这是我的调试代码:

from os import system as sys_call
import os
import sys

debug_egg_dir = "PyCharm\debug-eggs\"
debug_egg_name = "pycharm-debug-py3k.egg"
python_dir = os.path.dirname(sys.executable)

PORT = 15999


def connect(server):
    if sys_call("ping -n 1 " + server + ">nul") != 0:
        raise ConnectionError("PyCharm Debug Server ({}) is not available".format(server))

    try:
        sys.path.append(python_dir + "\" + debug_egg_name)
        import pydevd
        pydevd.settrace(server, port=PORT, stdoutToServer=True, stderrToServer=True, suspend=False)

    except ImportError:
        raise FileNotFoundError("Copy file {0}{1} into {2}".format(
            debug_egg_dir,
            debug_egg_name,
            python_dir
        ))

    except Exception as e:
        raise e