كيف أرفق مصححا عن بعد لعملية بيثون؟
-
23-08-2019 - |
سؤال
لقد تعبت من إدراج
import pdb; pdb.set_trace()
خطوط إلى برامج بيثون الخاصة بي وتصحيح الأخطاء من خلال وحدة التحكم. كيف يمكنني توصيل مصحح الأخطاء عن بعد وإدراج نقاط التوقف من واجهة المستخدم المتحضرة؟
المحلول
استعمال WinPDB.. وبعد إنها منصة مستقلة Graphical GPL Python Debugger مع دعم تصحيح الأخطاء عن بعد عبر شبكة ومواضيع متعددة ومعدلة مساحة الاسم والتصحيح المضمن والاتصال المشفهر وتصل إلى 20 مرة أسرع من PDB.
سمات:
- رخصة GPL. WinPDB هو برنامج مجاني.
- متوافق مع CpeThon 2.3 من خلال 2.6 و Python 3000
- متوافق مع Wxpython 2.6 من خلال 2.8
- منصة مستقلة، واختبارها على Ubuntu Gutsy و Windows XP.
- واجهات المستخدم: RPDB2 يعتمد على وحدة التحكم، في حين يتطلب WinPDB Wxpython 2.6 أو إصدار أحدث.
(مصدر: winpdb.org.)
نصائح أخرى
حسنا، يمكنك الحصول على شيء مشابه تماما باستخدام فتحة ملتوية، والتي تعمل مثل هذا:
from twisted.internet import reactor
from twisted.cred import portal, checkers
from twisted.conch import manhole, manhole_ssh
def getManholeFactory(namespace):
realm = manhole_ssh.TerminalRealm()
def getManhole(_):
return manhole.Manhole(namespace)
realm.chainedProtocolFactory.protocolFactory = getManhole
p = portal.Portal(realm)
p.registerChecker(
checkers.InMemoryUsernamePassword DatabaseDontUse(admin='foobar'))
f = manhole_ssh.ConchFactory(p)
return f
reactor.listenTCP(2222, getManholeFactory(globals()))
reactor.run()
ثم يمكنك فقط تسجيل الدخول إلى البرنامج عبر SSH؛
$ ssh admin@localhost -p 2222
admin@localhost's password:
استخدام Foobar. ككلمة المرور.
عندما تقوم بتسجيل الدخول، ستحصل على مطالبة بيثون عادية حيث يمكنك فقط كزة عند البيانات. انها ليست هي نفسها تماما الحصول على trureback المرسلة إلى المضيف.
الآن، قد يكون هذا صعبا للتكاملين في برنامج واجهة المستخدم الرسومية، في هذه الحالة قد تحتاج إلى اختيار مفاعل آخر، على سبيل المثال بالنسبة للبرامج GTK المستندة إلى GTK2RECTOR إلخ.
إذا كنت ترغب في إرسال TrureBack الفعلية المرسلة، فأنت بحاجة إلى إنشاء قناة مقبس لكل من Stderr و Stdin و Stdout التي تمر عبر الشبكة بدلا من الطباعة إلى المضيف المحلي الخاص بك. لا ينبغي أن يكون من الصعب للغاية إنجاز باستخدام الملتوية.
متأخرا بعض الشيء، ولكن هنا هو محلول تصحيح عن بعد خفيف الوزن للغاية من باب المجاملة http://michaeldehaan.net/post/35403909347/tips-on-using-debuggers-with-ansible.:
pip install epdb
على المضيف البعيد.- تأكد من عدم السماح بإعداد مجيئك بالاتصالات غير المحلية إلى المنفذ 8080 على المضيف البعيد، منذ
epdb
الإعدادات الافتراضية للاستماع عن أي عنوان (INADDR_ANY
)، وليس 127.0.0.1. - بدلا من استخدام
import pdb; pdb.set_trace()
في البرنامج الخاص بك، استخدمimport epdb; epdb.serve()
. - تسجيل الدخول بشكل آمن إلى المضيف البعيد، منذ
epdb.connect()
يستخدم telnet. - نعلق على البرنامج باستخدام
python -c 'import epdb; epdb.connect()'
.
اضبط بتات الأمان لتناسب إعداد الشبكة المحلية وموقف الأمان، بالطبع.
حلتين من المعالم الحديثة:
PTVS عبر منصة تصحيح الأخطاء عن بعد
بيشم / Pydev تصحيح الأخطاء عن بعد