我打電話給python -m pdb myapp.py
,當發生異常時,我通常會被拋回到pdb解釋器來調查問題。但是,在通過curses.wrapper()
調用並進入curses模式之後,拋出此異常,導致pdb解釋器無效。我該如何解決這個問題?同時使用調試器和curses?
回答
James`答案是一個很好的,我已經upvoted它,但我也會考慮嘗試拆分我的程序的邏輯和表示層。將curses部分放在庫頂部的薄層上,並編寫一個簡單的驅動程序,調用正確的例程來重新創建錯誤。然後你可以潛入並做必要的事情。
我能想到的另一種方法是創建一個名爲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/簡要提及。
一個明智的建議,保持curses邏輯分離,並感謝'curses.wrapper'指針。 – 2010-06-04 10:26:30
不客氣。 – 2010-06-04 12:30:39
不熟悉Python,這可能不是你想要的。但顯然,winpdb可以附加到腳本 - 就像gdb可以運行的進程(IIUC)。
http://winpdb.org/docs/launch-time/
不要被名字誤導,它是獨立的平臺。
好的建議。你擊敗了我。這是解決這個問題的正確方法。對於GUI和守護進程也很有用。 – 2010-06-01 11:36:15
我忘記了一切! – 2010-06-01 11:56:58
我不認爲可以附加使用核心庫的pdb? – 2010-06-04 10:26:59
使用pyclewn
可以使用pyclewn用vim。 或使用PDB克隆,pyclewn 其良好的,它像廣發行的核心,可以遠程調試
- 1. Eclipse,CDT,(N)Curses和調試/分析
- 2. 同時調試python和Java
- 3. 如何使用兩個終端窗口調試Python curses代碼
- 4. 用colorama使用curses
- 5. Vim,Python和curses
- 6. 在Python中登錄時使用curses
- 7. 在python中使用curses和raw_input
- 8. 同時使用php的Xdebug調試2臺服務器
- 9. 調試器使用
- 10. Moq測試即使在同一方法調用時同時驗證Times.Once()和Times.Never()
- 11. 使用調試器時拒絕連接
- 12. 使用計時器進行調試
- 13. com.sun.jdi.InvocationException調用方法,同時調試
- 14. 在Eclipse PyDev中調試Python Curses應用程序?
- 15. 在IDE中同時調試Java和Javascript
- 16. 同時生成調試和發佈
- 17. Usb繫繩和同時調試
- 18. 同時保存和調試Flash CS3
- 19. 使用chrome調試器調試圖標
- 20. 使用Visual Studio調試器調試C++
- 21. PHP&Facebook:使用CURL和Facebook調試器調試一個URL
- 22. 如何調試cuke4duke使用Ant和安裝遠程調試器
- 23. 當同時使用兩個調試器時,應用程序掛起
- 24. 同時運行儀器和調試控制檯
- 25. 爲什麼調試器在嘗試使用android模擬器和eclipse進行調試時未附加?
- 26. 如何正確使用curses /調試一個簡單的c程序
- 27. 可能在相同的Cassini調試會話中同時使用ASP和ASP.NET?
- 28. AVQueuePlayer和AVAudioPlayer同時調用
- 29. 如何使用gdb有效地調試多線程curses客戶端 - 服務器應用程序?
- 30. Groovy調試器不同步
我覺得可能是有用的信息來源http://wiki.python.org/moin/PythonDebuggers – 2010-02-07 15:00:42
我笑在這個標題。是的調試和詛咒似乎一起在我腦海中。 – HLGEM 2010-02-09 21:56:51