为 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
我正在开发应用程序来部署 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