python - pdb 事后调试器自行完成

标签 python opencv pdb

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

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

UPD:我在日志中发现了一个 ValueError: signal only works in main thread 错误,所以问题是这是另一个线程中的 C 异常。

最佳答案

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

关于python - pdb 事后调试器自行完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50160981/

相关文章:

python - pdb:在不在 sys.path 中的文件上设置断点

python - 当同一行上有多个调用时,如何单步执行 PDB 中的特定可调用函数?

python - 获取 Django 中模型类的调用堆栈

python - 使用 s.loc 和 s.first_valid_index() 时出现 KeyError

python - 如何将曲线拟合到骨架图像?

python - 如何在文本图像上应用二进制掩码以在python中分离文本区域?

python - 如何以编程方式逐行执行/单步执行 Python 代码

c++ - 带有模板类的 SWIG SHARED_PTR 宏

python - Django - 通用 FormView - 将输入传递到模板中

c++ - 使用 cv::Mat 的高效 C++ 四元数乘法