【发布时间】:2016-02-03 12:16:28
【问题描述】:
当我尝试调试应用程序时发生了一些奇怪的事情。当我在 try-catch 块的 catch 部分设置断点时,调试器不会在断点处停止。
这是一个例子。
try {
throw std::overflow_error("test");
} catch (...) {
qDebug() << "caught"; // HERE, I SET BREAKPOINT ON THIS LINE
}
当异常发生时它会在屏幕上打印“caught”,但它不会在这一行停止。 (如果您想知道;是的,我正在调试模式下构建应用程序并在调试模式下运行)
我是否对 gdb 的工作原理缺乏基本知识? (我的意思是它可能不会停止,因为 catch 部分中的断点不起作用)
任何帮助将不胜感激。
谢谢。
【问题讨论】:
-
你确定
cv::threshold会抛出吗? -
* 如果你的代码抛出异常,那么只有它会进入 catch 块。所以请确保。
-
@MohamadElghawi 你问这个问题是对的。对不起,我没有提到它,它只是一个伪代码。它不一定是阈值方法。
-
在 gdb 中使用“catch catch, catch throw”
-
这是在 Qt Creator 中访问 gdb 控制台的方法:stackoverflow.com/questions/4592643/… 您需要键入“catch catch”或“catch throw”(或两者)来停止程序在异常时执行。