我正在尝试调试一段代码,这些代码在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异常。
答案 0 :(得分:1)
问题确实是由图像宽度为零引起的,但输出因其他线程的输出而模糊,因为处理是在工作池中执行的。一个解决方案是以某种方式使处理代码在主线程中执行,然后pdb开始调试会话,我能够找出问题。