使用GDB 像这样进行捕获:
catch throw
引发异常时,程序停止。
如何使GDB在引发异常但被程序捕获时不停止?
还是应该使用GDB 进行全局try-catch而不是
catch throw
?
EDIT1
try
{
// every time exception is thrown
// program is stopped by GDB
}
catch(const std::exception &e)
{
// even if the exception is caught by the program
}
EDIT2 开始gdb
gdb
file /usr/home/user/program
shell ps x
attach #pid
catch throw
c
最佳答案
catch throw
将捕获所有抛出的异常,并且没有办法限制它。
您在这里至少有两个选择。您根本无法使用catch throw
,如果您使用的是Unix风格,它将被隔离,并在引发异常的地方停止(如果不会被捕获)。
或者,您可以在ftp://ftp.gnu.org/pub/old-gnu/Manuals/gdb/html_node/gdb_30.html上设置一个断点,如ojit_a所示(这是我使用Google时的第一个匹配点-请尝试研究自己,然后再发布在Stackoverflow上)。