我编写了一个 C++ 堆栈应用程序并使用 CYGWIN g++ 编译器运行它。应用程序由于未完美处理异常而崩溃。
它给了我堆栈跟踪转储文件 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
我想知道这个文件意味着什么以及如何阅读它,谷歌搜索了很多但找不到满意的答案。
谢谢