2012-12-09 192 views
2

追赶这样,使用GDBGDB。只捕获不捕获的异常

catch throw 

当异常被抛出,程序停止。

如何让GDB不会停止,当异常被抛出,但由节目抓? 或者我应该有全球性的try-catch,而不是使用GDB

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 
+0

能否请您阐述一下你是什么意思?或者至少发布一些完整的代码? –

+0

你没有使用GDB ** catch throw ** –

+1

很难理解'catch throw'部分是GDB命令。我建议你改写一下,比如“在GDB中使用命令'catch throw'时,...” –

回答

3

catch throw将捕获所有抛出的异常并没有办法限制。

你在这里至少有两个选项。你完全可以根本不使用catch throw,如果你对unix有一些了解,它会在出现异常时停止故障并停止,如果它不被捕获的话。

或者你可以在__raise_exception上设置一个断点,如ftp://ftp.gnu.org/pub/old-gnu/Manuals/gdb/html_node/gdb_30.html(这是我使用谷歌时的第一次打击 - 请在发布在Stackoverflow上之前试着研究自己)。

+0

什么时候捕捉什么都不可能在segfault上看到回溯? –

+0

是的,如果你没有发现异常,gdb应该向你展示在投掷点的回溯。 –