在gdb中,是否有可能重新抛出异常而不丢失回溯?或者是否有一种方法可以在几行代码内向后跟踪回溯?我使用的是最新版本GDB 7.7.1。
有时候我会遇到这样的情况,需要从原始异常抛出处获取回溯,并需要注释掉try/catch部分,重新编译并在gdb中重新运行。
try {
someFuncThatCanThrowException();
} catch(exceptionType& exception) {
if(@CAN_RECOVER@) {
...
} else {
throw;
}
}
----OR----
try {
someFuncThatCanThrowException();
} catch(exceptionType& exception) {
exception.printMessageToCout();
throw;
}