我編寫了一個C++堆棧應用程序,並使用CYGWIN g ++編譯器運行它。應用程序崩潰,因爲異常處理不完美。StackTrace C++應用程序
它給我stacktrace轉儲爲文件Stack.exe.stackdump。我對這個StackTrace不熟悉,可能有人告訴我如何閱讀它,它意味着什麼?
只是基於收到的評論來明確,堆棧數據結構只是一個例子,使應用程序崩潰,並給予stackTrace。我的意思是這個堆棧跟蹤是在程序崩潰並且與我的堆棧數據結構應用程序無關的任何情況下生成的,我剛剛用它作爲程序崩潰的現有代碼。
產生我的代碼段異常:
class RuntimeException{
private:
string errorMsg;
public:
RuntimeException(const string& err){errorMsg = err;}
string getMessage() const {return errorMsg;}
};
class StackEmpty : public RuntimeException{
public:
StackEmpty(const string& err) : RuntimeException(err){}
};
template <typename E >
const E& ArrayStack<E> ::top() const throw(StackEmpty)
{
if(empty()) throw StackEmpty("Top of Empty Stack");
return S[t];
}
int main()
{
ArrayStack <int> A;
cout << "######\n";
cout << A.top() << "\n";
cout << "######\n";
}
輸出:
$ ./Stack
######
Aborted (core dumped)
它生成一個文件Stack.exe.stackdump,其內容爲:
Stack trace:
Frame Function Args
0022A774 7608C313 (000000C0, 0000EA60, 00000000, 0022A8A8)
0022A788 7608C2C2 (000000C0, 0000EA60, 000000A4, 0022A884)
0022A8A8 610DC559 (00000000, 00000000, 00000000, 00000000)
0022A998 610D9913 (00000000, 6110073E, 003B0023, 00230000)
0022A9F8 610D9DEE (0022A9D0, 6110073E, 003B0023, 00000006)
0022AAA8 610D9F40 (000008F4, 00000006, 00000000, 00000000)
0022AAC8 610D9F6C (00000006, 00000006, 0022AB38, 00404C6B)
0022AAF8 610DA233 (0022AB28, 611A1E9B, 0022ABAC, 00000001)
0022AB48 00404777 (00000000, 00000000, 0022AC18, 004142CB)
0022AB58 00404166 (20048588, 004460E0, 00410F78, 0040F89F)
0022AC18 004142CB (0022AC50, 00445218, 20010100, 004011B5)
0022AC68 004011EC (00000001, 0022AC90, 20010100, 612756CA)
0022ACF8 6100763A (00000000, 0022CD78, 61006C50, 00000000)
End of stack trace
我想知道這個文件是什麼意思和如何閱讀它,搜索了很多,但找不到滿意的答案WER。
感謝
這個問題很奇怪。 NPE說你似乎混淆了兩種不同的堆棧。你究竟在做什麼?你的目標是什麼? – john 2013-04-10 06:14:03
@john我創建了一個堆棧實現,其中生成了一些異常,這些異常沒有正確處理,因此輸出(核心轉儲),現在系統生成堆棧跟蹤以排除發生錯誤的位置。我想弄清楚這個stackTrace是如何讀取它的。希望使我的觀點清楚。我的stackDataStructure只是一個例子,可以讓程序崩潰並生成這個stackTrace。我只是問如何讀取這個stackTrace來找出應用程序崩潰的位置。 – 2013-04-10 06:19:46
OK Arun Saha給了你一個答案 – john 2013-04-10 06:21:48