GDB。只捕获不捕获的异常
追赶这样,使用GDB:GDB。只捕获不捕获的异常
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
catch throw
将捕获所有抛出的异常并没有办法限制。
你在这里至少有两个选项。你完全可以根本不使用catch throw
,如果你对unix有一些了解,它会在出现异常时停止故障并停止,如果它不被捕获的话。
或者你可以在__raise_exception
上设置一个断点,如ftp://ftp.gnu.org/pub/old-gnu/Manuals/gdb/html_node/gdb_30.html(这是我使用谷歌时的第一次打击 - 请在发布在*上之前试着研究自己)。
什么时候捕捉什么都不可能在segfault上看到回溯? –
是的,如果你没有发现异常,gdb应该向你展示在投掷点的回溯。 –
能否请您阐述一下你是什么意思?或者至少发布一些完整的代码? –
你没有使用GDB ** catch throw ** –
很难理解'catch throw'部分是GDB命令。我建议你改写一下,比如“在GDB中使用命令'catch throw'时,...” –