سؤال

انا اتصل python -m pdb myapp.py, عندما حرائق استثناء، وأعادت عادة إلى مترجم PDB للتحقيق في المشكلة. ومع ذلك يتم طرح هذا الاستثناء بعد أن اتصلت به curses.wrapper() ودخل وضع اللعنات، مما يجعل مترجم PDB عديم الفائدة. كيف يمكنني العمل حول هذا؟

هل كانت مفيدة؟

المحلول

James` Answer هو جيد ولدي ذلك، لكنني أيضا أفكر في محاولة تقسيم طبقات المنطق وعرض البرنامج الخاص بي. إبقاء اللعينات جزءا من طبقة رقيقة أعلى مكتبة وكتابة برنامج تشغيل بسيط يستدعي الإجراءات الصحيحة لإعادة إنشاء الخطأ. ثم يمكنك الغوص وفعل ما هو ضروري.

طريقة أخرى يمكنني التفكير فيها هي إنشاء وظيفة تسمى debug أو شيء يلقيك مرة أخرى في الشاشة العادية واستدعاء PDB. ثم التمسك بها فقط قبل الرمز الذي يثير الاستثناء وتشغيل البرنامج الخاص بك. شيء مثل

def debug(stdscr):
    curses.nocbreak()
    stdscr.keypad(0)
    curses.echo()
    curses.endwin()
    import pdb; pdb.set_trace()

على ما يبدو، هذا يشبه ما يتم مع curses.wrapper وظيفة. ذكرت لفترة وجيزة في http://www.amk.ca/python/howto/curses/.

نصائح أخرى

عدم دراية بيثون، قد لا يكون هذا بالضبط ما تريد. ولكن على ما يبدو، يمكن ل WinPDB أن نعلق على النصي - تماما مثل GDB يمكن أن تكون عملية قيد التشغيل (IIUC).

http://winpdb.org/docs/launch-time/

لا تخضل بالاسم، إنها منصة مستقلة.

استخدام pyclewn.

يمكنك استخدام pyclewn. مع vim. أو استخدم PDB استنساخ، جوهر PycleWn جيد، مثل GDB، يمكن تصحيح عن بعد

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