D.S

dev.mysql.com

MySQL :: MySQL 5.6 リファレンスマニュアル :: 24.4.1.5 スタックトレースの使用

MySQL :: MySQL 5.6 リファレンスマニュアル :: 24.4.1.5 スタックトレースの使用 Contact MySQL  |  Login  |  Register The world's most popular open source database MySQL.com Downloads Documentation Developer Zone Developer Zone Downloads MySQL.com Documentation MySQL Server MySQL Enterprise Workbench Router Utilities/Fabric MySQL NDB Cluster Connectors More MySQL.com Downloads Developer Zone Section Menu:   Documentation Home MySQL 5.6 リファレンスマニュアル 序文と法的通知 一般情報 MySQL のインストールと更新 チュートリアル MySQL プログラム MySQL サーバーの管理 セキュリティー バックアップとリカバリ 最適化 言語構造 グローバリゼーション データ型 関数と演算子 SQL ステートメントの構文 InnoDB ストレージエンジン 代替ストレージエンジン 高可用性と拡張性 レプリケーション MySQL Cluster NDB 7.3 および MySQL Cluster NDB 7.4 パーティション化 ストアドプログラムおよびビュー INFORMATION_SCHEMA テーブル MySQL パフォーマンススキーマ Connector および API MySQL の拡張 MySQL の内部仕様 MySQL のスレッド MySQL テストスイート MySQL プラグイン API プラグイン API の特徴 プラグイン API のコンポーネント プラグインのタイプ ストレージエンジンプラグイン 全文パーサープラグイン デーモンプラグイン INFORMATION_SCHEMA プラグイン 準同期レプリケーションプラグイン 監査プラグイン 認証プラグイン パスワード検証プラグイン プラグインの作成 プラグインの作成の概要 プラグインのデータ構造体 プラグインライブラリのコンパイルおよびインストール 全文パーサープラグインの作成 デーモンプラグインの作成 INFORMATION_SCHEMA プラグインの作成 準同期レプリケーションプラグインの作成 監査プラグインの作成 認証プラグインの作成 パスワード検証プラグインの作成 プラグインのための MySQL サービス MySQL への新しい関数の追加 ユーザー定義関数インタフェースの機能 新しいユーザー定義関数の追加 単純な関数のための UDF の呼び出しシーケンス 集約関数のための UDF の呼び出しシーケンス UDF 引数の処理 UDF の戻り値およびエラー処理 ユーザー定義関数のコンパイルおよびインストール ユーザー定義関数のセキュリティー上の予防措置 新しいネイティブ関数の追加 MySQL のデバッグおよび移植 MySQL サーバーのデバッグ デバッグのための MySQL のコンパイル トレースファイルの作成 pdb を使用した Windows のクラッシュダンプの作成 gdb での mysqld のデバッグ スタックトレースの使用 mysqld でのエラーの原因を見つけるためのサーバーログの使用 テーブルが破損した場合のテストケースの作成 MySQL クライアントのデバッグ DBUG パッケージ MySQL Enterprise Edition MySQL Workbench MySQL 5.6 のよくある質問 エラー、エラーコード、および一般的な問題 MySQL リリースノート 制約と制限 MySQL 用語集 サードパーティーコンポーネントライセンス 全般的な索引 関数の索引 コマンドの索引 関数の索引 INFORMATION_SCHEMA の索引 結合型の索引 演算子の索引 オプションの索引 権限の索引 モードの索引 ステートメント/構文の索引 ステータス変数の索引 システム変数の索引 トランザクション分離レベルのインデックス Download this Manual PDF (US Ltr) - 27.1Mb PDF (A4) - 27.1Mb EPUB - 7.5Mb HTML Download (TGZ) - 7.2Mb HTML Download (Zip) - 7.2Mb version 5.6 8.0  English 5.7  English 5.6  English 5.5  English MySQL 5.6 リファレンスマニュアル  /  ...  /  MySQL の拡張  /  MySQL のデバッグおよび移植  /  MySQL サーバーのデバッグ  /  スタックトレースの使用 24.4.1.5 スタックトレースの使用 オペレーティングシステムによっては、mysqld が予期せずに異常終了した場合に、エラーログにスタックトレースが含まれています。これを使用して、mysqld が異常終了した場所 (および多くの場合その理由) を見つけることができます。 セクション5.2.2「エラーログ」 を参照してください。スタックトレースを取得するには、-fomit-frame-pointer オプションを gcc に指定して mysqld をコンパイルしないでください。 セクション24.4.1.1「デバッグのための MySQL のコンパイル」 を参照してください。 エラーログのスタックトレースは次のように出力されます。 mysqld got signal 11; Attempting backtrace. You can use the following information to find out where mysqld died. If you see no messages after this, something went terribly wrong... stack_bottom = 0x41fd0110 thread_stack 0x40000 mysqld(my_print_stacktrace+0x32)[0x9da402] mysqld(handle_segfault+0x28a)[0x6648e9] /lib/libpthread.so.0[0x7f1a5af000f0] /lib/libc.so.6(strcmp+0x2)[0x7f1a5a10f0f2] mysqld(_Z21check_change_passwordP3THDPKcS2_Pcj+0x7c)[0x7412cb] mysqld(_ZN16set_var_password5checkEP3THD+0xd0)[0x688354] mysqld(_Z17sql_set_variablesP3THDP4ListI12set_var_baseE+0x68)[0x688494] mysqld(_Z21mysql_execute_commandP3THD+0x41a0)[0x67a170] mysqld(_Z11mysql_parseP3THDPKcjPS2_+0x282)[0x67f0ad] mysqld(_Z16dispatch_command19enum_server_commandP3THDPcj+0xbb7[0x67fdf8] mysqld(_Z10do_commandP3THD+0x24d)[0x6811b6] mysqld(handle_one_connection+0x11c)[0x66e05e] トレースの関数名の解決に失敗した場合、トレースに格納される情報が少なくなります。 mysqld got signal 11; Attempting backtrace. You can use the following information to find out where mysqld died. If you see no messages after this, something went terribly wrong... stack_bottom = 0x41fd0110 thread_stack 0x40000 [0x9da402] [0x6648e9] [0x7f1a5af000f0] [0x7f1a5a10f0f2] [0x7412cb] [0x688354] [0x688494] [0x67a170] [0x67f0ad] [0x67fdf8] [0x6811b6] [0x66e05e] 後者の場合は、resolve_stack_dump ユーティリティーを使用して、次の手順を使用することによって、mysqld が異常終了した場所を判別できます。 スタックトレースから mysqld.stack などのファイルに数値をコピーします。この数値には、囲んでいた角括弧を含めないでください。 0x9da402 0x6648e9 0x7f1a5af000f0 0x7f1a5a10f0f2 0x7412cb 0x688354 0x688494 0x67a170 0x67f0ad 0x67fdf8 0x6811b6 0x66e05e mysqld サーバーのシンボルファイルを作成します。 shell> nm -n libexec/mysqld > /tmp/mysqld.sym mysqld が静的にリンクされていない場合は、代わりに次のコマンドを使用します。 shell> nm -D -n libexec/mysqld > /tmp/mysqld.sym C++ のシンボルをデコードする場合は、nm に対して --demangle を使用します (使用できる場合)。使用しているバージョンの nm にこのオプションがない場合は、スタックダンプが生成されたあとに c++filt コマンドを使用して、C++ 名をデマングルする必要があります。 次のコマンドを実行します。 shell> resolve_stack_dump -s /tmp/mysqld.sym -n mysqld.stack デマングルされた C++ 名をシンボルファイルに含めることができなかった場合は、c++filt を使用して resolve_stack_dump の出力を処理します。 shell> resolve_stack_dump -s /tmp/mysqld.sym -n mysqld.stack | c++filt これにより、mysqld が異常終了した場所が出力されます。この出力が、mysqld が異常終了した理由を見つけるために役立たない場合は、バグレポートを作成して、上記のコマンドの出力をバグレポートに含めてください。 ただし、多くの場合、スタックトレースだけがあっても問題の原因を見つけるために役立ちません。バグを見つけたり回避策を提供したりするためには、ほとんどの場合、mysqld が強制終了されたステートメントを知る必要があり、問題を再現できるテストケースがあれば役に立ちます。 セクション1.7「質問またはバグをレポートする方法」 を参照してください。 新しいバージョンの glibc スタックトレース関数では、オブジェクトへの相対アドレスも出力されます。glibc ベースのシステム (Linux) では、プラグイン内でのクラッシュのトレースは次のようになります。 plugin/auth/auth_test_plugin.so(+0x9a6)[0x7ff4d11c29a6] 相対アドレス (+0x9a6) をファイル名および行番号に変換するには、次のコマンドを