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
このファイルの意味と読み方を知りたいのですが、よくグーグル検索しましたが、満足のいく答えが見つかりませんでした。
ありがとう