【问题标题】:Best way to debug Python for WinPE为 WinPE 调试 Python 的最佳方法
【发布时间】:2017-02-18 00:18:03
【问题描述】:
我正在开发应用程序来部署 Windows 操作系统和一些包含驱动程序的软件。此应用程序旨在在 WinPE(Windows 预安装环境)中工作,我从笔记本电脑的 USB 记忆棒或 VM 的 VHD 启动。对于开发,我使用安装在桌面 Windows 7 上的 IDE (PyCharm)。
但是在台式电脑上写代码,再把它复制到usb或VHD上,然后在笔记本电脑或VM上运行代码,却无法调试它,真的很不舒服。我发现 Vagrant 可以帮助我在 VM 中运行代码,但无法在 WinPE 中直接安装 SSH。
还有人可以推荐吗?
【问题讨论】:
标签:
debugging
ssh
vagrant
pycharm
winpe
【解决方案1】:
只找到了这样一个解决方案:
1. 共享您的项目目录以确保桌面和远程代码完全相等。
2. 确保远程机器(或 VM)可以 ping 您安装了 PyCharm 的台式电脑。
3. 按照 PyCharm 说明使用其 pydev.egg 进行远程调试。
这不是很方便,因为每次你想再次调试应用程序时,你都应该在远程机器或虚拟机上重新启动应用程序。 PyCharm 远程调试中还有一个错误:如果您在桌面操作系统中使用西里尔语言环境,您可能会遇到路径映射错误。所以目前我无法让它与断点一起正常工作。
这是我的调试代码:
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