プログラミングでは、バグをを修正するためのデバッグを行う必要があります。
デバッグに必要な情報について紹介します。
デバッグについて紹介します
- デバッグとは
- デバッグの方法
- デバッグでの確認事項
- ログ解析
- 信号トレース
デバッグとは
システム開発やプログラミングの過程で、不具合(バグ)やエラーを100%除去することは困難です。
テストや問題発生時に問題を特定して修正する作業をデバッグと呼びます。
デバッグにより、問題の早期発見や早期解決することがシステムの品質や信頼性の向上に重要です。
デバッグの方法
デバッグの方法は複数ありますが、本記事では代表的なデバッグ方法を紹介します。
ステップ実行
ステップ実行は、プログラムを1行ずつ順に実行して、処理結果とソースコードを比較/確認することで問題を特定する方法です。
変数の値や処理を確認しながら問題箇所を特定します。
ブレークポイントを設定したデバッグ
ブレークポイントとは、コード内の特定の行で、処理を一時停止するポイントです。
処理を1時停止することで、変数の値や処理内容を確認することができいます。
問題被疑の箇所が把握できている場合に、ブレークポイントを設定すれば、効率的にデバッグすることができます。
ユニットテスト
ユニットテストは、プログラムの機能やモジュール単位で確認するテストです。
テストケースを事前準備して、プログラムを実行し、処理結果が問題ないかを確認します。
ログ解析
プログラムの実行過程を記録したログを確認して、デバッグを行います。
デバッグしやすいログは、5W1Hがわかるログであることが重要です。
デバッグしやすいログについて紹介します。
サンプルログ
[2024-10-21 14:3630] INFO python-log.py:11 <module> ロガーの設定
[2024-10-21 14:3630] INFO python-log.py:36 <module> メイン処理の実行
[2024-10-21 14:3630] DEBUG python-log.py:14 debug_log デバッグメッセージを出力
[2024-10-21 14:3630] INFO python-log.py:17 debug_info 情報メッセージを出力
[2024-10-21 14:3630] WARNING python-log.py:20 debug_warning 警告メッセージを出力
[2024-10-21 14:3630] ERROR python-log.py:23 debug_error エラーメッセージを出力
[2024-10-21 14:3630] CRITICAL python-log.py:26 debug_critical 重大なエラーメッセージを出力
[2024-10-21 14:3630] ERROR python-log.py:33 debug_try 例外エラーが発生しました:division by zero
情報 | 出力内容 |
---|---|
日時情報 | 処理を実行した日時 |
ログレベル | メッセージの重要レベル |
モジュール名/関数名 | 処理を実行したモジュールや関数の名称 |
メッセージ | 発生事象を説明するメッセージ |
スタックトレース | 例外処理のスタックトレース |
日時情報
ログに日時を含めることで、いつ処理を実行したかを確認することができます。
複数の処理が並行処理されている状況では、発生日時とログの日時情報を比較してトレースすることができます。
ログレベル
ログレベルでメッセージの重要レベルを出力します。
主なログレベルを紹介します。
ログレベル | 出力内容 |
---|---|
DEBUG | デバッグに必要なログ |
INFO | 出力したいメッセージのログ |
WARNING | 警告のログ |
ERROR | エラーのログ |
CRITICAL | クリティカル(重要度が高い)のログ |
モジュール名/関数名
処理を実行したモジュールや関数の名称を、ログに出力することで、エラーが発生舌箇所を特定しやすくなります。
メッセージ
発生事象を説明するメッセージを簡潔で具体的に記述することで、トレースしやすくします。
スタックトレース
例外処理のスタックトレースを出力することで、例外処理が発生した要因を特定しやすくします。
信号トレース
信号トレースは、プログラム実行中に発生する信号/シグナルを記録して、追跡する方法です。
他システムとの連携のために信号送信していたり、並列処理のために信号/シグナルを使用している場合は、信号の内容を解析することで、処理の流れや問題を把握することができます。
まとめ
プログラミングにおけるデバッグについて紹介しました。
- 様々なデバッグ手法がある
- ログの情報から問題箇所を特定する
- 信号トレースの情報から問題箇所を特定する
デバッグは、ソースコードの修正して品質を高めるために必要です。
デバッグする際に必要な情報は複数あり、必要な情報を参照して問題箇所を発見していきます。
デバッグを極めることで、ソースコードの品質を向上させることができるので、ぜひ覚えておきたい事項の1つです。