سؤال

لقد تعبت من إدراج

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 أو إصدار أحدث.

Screenshot
(مصدر: 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.:

  1. pip install epdb على المضيف البعيد.
  2. تأكد من عدم السماح بإعداد مجيئك بالاتصالات غير المحلية إلى المنفذ 8080 على المضيف البعيد، منذ epdb الإعدادات الافتراضية للاستماع عن أي عنوان (INADDR_ANY)، وليس 127.0.0.1.
  3. بدلا من استخدام import pdb; pdb.set_trace() في البرنامج الخاص بك، استخدم import epdb; epdb.serve().
  4. تسجيل الدخول بشكل آمن إلى المضيف البعيد، منذ epdb.connect() يستخدم telnet.
  5. نعلق على البرنامج باستخدام python -c 'import epdb; epdb.connect()'.

اضبط بتات الأمان لتناسب إعداد الشبكة المحلية وموقف الأمان، بالطبع.

حلتين من المعالم الحديثة:

  1. PTVS عبر منصة تصحيح الأخطاء عن بعد

  2. بيشم / Pydev تصحيح الأخطاء عن بعد

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top