デバッグとプロファイリング
**************************

ここに含まれるライブラリは Python での開発を手助けします。 デバッガを
使うと、コードのステップ実行やスタックフレームの解析、ブレークポイント
の設定などができます。 プロファイラはコードを実行して実行時間の詳しい
内訳を示すので、プログラムのボトルネックを特定できます。 監査イベント
を使うと、通常ならプログラムに手を加えるデバッグやパッチ適用が必要な実
行時の振る舞いを把握できます。

* 監査イベント表

* "bdb" --- デバッガーフレームワーク

* "faulthandler" --- Python トレースバックをダンプする

  * tracebackのダンプ

  * C スタックのダンプ

    * C スタックの互換性

  * フォールトハンドラの状態

  * タイムアウト後にtracebackをダンプする

  * ユーザシグナルに対してtracebackをダンプする

  * ファイル記述子の問題

  * 使用例

* "pdb" --- Python デバッガ

  * コマンドライン・インターフェース

  * デバッガコマンド

* "profiling" --- Python のプロファイラ

  * プロファイリングの概要

  * プロファイラの選択

    * 統計的サンプリングを使う場面

    * 決定論的トレースを使う場面

  * クイックスタート

    * 統計的プロファイリング

    * 決定論的プロファイリング

  * プロファイル出力の読み方

  * 従来のコードとの互換性

    * "profiling.tracing" --- 決定論的プロファイラ

      * 決定論的プロファイリングとは

      * コマンドライン・インターフェース

      * プログラムからの使用例

        * 基本的なプロファイリング

        * "Profile" クラスを使う

      * モジュールリファレンス

      * カスタムな時刻取得用関数を使う

      * 制限事項

    * "profiling.sampling" --- 統計的プロファイラ

      * 統計的プロファイリングとは

        * 時間の推定方法

        * 別の方法を使う場面

      * 簡単な使用例

      * コマンド

        * "run" コマンド

        * "attach" コマンド

        * "dump" コマンド

        * "replay" コマンド

        * 本番環境でのプロファイリング

        * プラットフォームの要件

        * バージョンの互換性

      * サンプリングの設定

        * サンプリングレートと計測時間

        * スレッドの選択

        * ブロッキングモード

        * 特殊なフレーム

        * オペコードを考慮したプロファイリング

        * リアルタイムの統計

        * サブプロセスのプロファイリング

        * サンプリング効率

      * プロファイリングモード

        * 実時間モード

        * CPU モード

        * 実時間と CPU のプロファイルの比較

        * GIL モード

        * 例外モード

      * 出力形式

        * pstats 形式

        * 集約スタック形式

        * フレームグラフ形式

          * 差分フレームグラフ

        * Gecko 形式

        * ヒートマップ形式

        * バイナリ形式

      * 記録と再生を使った作業手順

      * ライブモード

        * キーボード操作

      * 非同期処理を考慮したプロファイリング

        * 非同期モード

        * タスクマーカーとスタックの再構成

        * オプションの制約

      * コマンドライン・インターフェース

        * 共通オプション

        * dump のオプション

        * サンプリングのオプション

        * モードのオプション

        * 出力のオプション

        * pstats の表示オプション

        * run コマンドのオプション

* "pstats" --- プロファイラの統計

  * プロファイルデータの読み込みと表示

    * 統計の操作

    * 出力の絞り込み

    * 呼び出し関係の分析

    * 複数のプロファイルの統合

  * "Stats" クラス

  * コマンドライン・インターフェース

* "timeit" --- 小さなコードスニペットの実行時間計測

  * 基本的な例

  * Python インターフェース

  * コマンドライン・インターフェース

  * 使用例

* "trace" --- Python 文実行のトレースと追跡

  * コマンドラインからの使用

    * 主要なオプション

    * 修飾的オプション

    * フィルターオプション

  * プログラミングインターフェース

* "tracemalloc" --- メモリ割り当ての追跡

  * 使用例

    * 上位10を表示する

    * 差を計算する

    * メモリブロックのトレースバックを取得する

    * top を整形化する

      * トレース中の全メモリブロックの現在のサイズとピーク時のサイズを
        記録する

  * API

    * 関数

    * DomainFilter

    * Filter

    * Frame

    * Snapshot

    * Statistic

    * StatisticDiff

    * Trace

    * Traceback
