我可以利用海灣合作委員會的回溯在程序的任何給定點獲得堆棧跟蹤,但我想從堆棧在引發異常時的任何幀中獲得跟蹤,即在堆棧之前平倉。從函數C++ stacktrace引發異常?
例如,下面的塊
func() {
throw std::exception();
}
try {
func();
}
catch (std::exception) {
std::cout << print_trace();
//do stuff
}
應該仍然能夠保留FUNC幀()以某種方式。
這一直是asked before,但它涉及一個未處理的異常,可能會終止程序,並可能不會給調用堆棧放鬆的機會?
有沒有辦法做到這一點,但仍然能夠捕捉和處理異常通常?
可能有一種方法,如爲所有異常處理程序,除了生成跟蹤並重新拋出異常外什麼也不做。理想情況下,我應該能夠在Exception類的構造函數中生成跟蹤,但在這裏我不一定能夠控制可能遇到的異常。
如果您想知道拋出異常的位置,最好的辦法是將該信息存儲在異常中。 – 2011-06-07 20:22:36