pdb post mortem debugger完成自己

时间:2018-05-03 17:41:02

标签: python opencv pdb

我正在尝试调试一段代码,这些代码在cv2.resize调用之一上意外崩溃,因为在C代码中引发了一些异常。出于某种原因,如果我尝试将其作为python -m pdb file.py运行,则会收到"Post mortem debugger finished"消息,因此无法进入调试会话,因为当前行再次设置为脚本的入口点。有关如何在调试器中捕获此错误的任何提示?我猜opencv python包装器错误地处理错误并且崩溃整个过程而不是引发python异常。 ipdb也因某种not self._running断言错误而崩溃,并因某些原因弄乱整个终端会话:许多符号(如换行符号)未得到正确处理且clear无效

opencv错误为OpenCV Error: Assertion failed (ssize.width > 0 && ssize.height > 0) in resize, file /io/opencv/modules/imgproc/src/resize.cpp, line 4044。 {cn}来自opencv源代码行,它调用CV_Assert(),不知道它是如何工作的。我在python代码中发现了一行导致它,我在运行resize之前打印了大小的图像,它们都是合理的大小。

UPD :我在日志中发现ValueError: signal only works in main thread错误,因此问题是这是另一个帖子中的C异常。

1 个答案:

答案 0 :(得分:1)

问题确实是由图像宽度为零引起的,但输出因其他线程的输出而模糊,因为处理是在工作池中执行的。一个解决方案是以某种方式使处理代码在主线程中执行,然后pdb开始调试会话,我能够找出问题。