デバッグでプログラム解析 其の一

忘れっぽいのでメモメモ

デバッガに関して

  • デバッグ(Debug)
    • プログラムのバグを取り除く行為のこと
  • デバッガ(Debugger)
    • デバッグするときに、プルグラムの動作を解析するときに使うツール。本来はプログラミング用の補助ツール。これを使いながらプログラムのソースを修正していく。でも、ソースだけを見てプログラムの間違えを探すのは大変なので、デバッガを使うとプログラムを実際に動かしながら問題点を探していくが可能。
  • アタッチ
    • デバッガは、プログラムをデバッガの制御下においてデバッグを行う。プログラムをデバッガの制御下に置くことをアタッチと言う。デバッガの配下で起動させることでアタッチすることも、元々起動しているプログラムをデバッガにアタッチすることも可能
  • デバッギ

デバッガの種類

対象による分類
  • ユーザモードデバッガ
    • ユーザモードで動作する一般的なアプリケーションを対象とするデバッガ。デバッガ自体もユーザモードで動作する
  • カーネルモードデバッガ
ソースコード対応による分類
  • シンボリックデバッガ
    • ソフトウェアを作るときに、あらかじめ出力指しておいたデバッグ用の情報などをもとにして、ソースコードレベルでデバッグを行えるデバッガ。通常のソフトウェア統合開発環境には、たいていシンボリックデバッガが付属している。
  • アブソリュートデバッガ
    • シンボリックデバッガでないものを差す。一般的な言い方ではない。
その他のデバッガ
  • Just-In-Timeデバッガ
    • 実行中のプログラムが致命的なエラーを発生したときにデバッガを自動起動させデバッグが行えるWindowsの機能(Just-In-Timeと言う)に対応したデバッガ。

Windowsの代表的なデバッガ

  • OllyDbg
    • フリーのデバッガで、ユーザモードデバッガ。もっとも普及している。バージョン1.10が安定バージョン。
  • SoftICE
    • カーネルモードデバッガで、有名。28万円と高いが、Microsoft自体ががフリーでカーネルモードのデバッガを出してたりしているので、2006年に販売が終了。
  • Debugging Tools For Windows
    • Microsoft自体が無償で公開しているデバッグツール群。カーネルモードデバッガの「KD」、ユーザモードデバッガの「CDB」と「NTSD」、両方のモードで動作可能なWinDbgなどが含まれる。
  • IDA Pro

デバッグ時の用語など

  • ブレークポイント
    • ある処理や、特定のメモリのアドレスにアクセスしたときにアプリケーションを止めるポイントのこと。ブレークポイントでプログラムを止めて、そのときのCPUやメモリの値を確認する。シンボリックデバッガだと、ソースコード上で停止位置を指定することが可能
  • ステップ実行
    • ブレークポイントで止めたアプリケーションを、CPUの1サイクルずつ実行していくこと。
  • ステップイン
    • ステップ実行しているときに、別のサブルーチンにステップ実行で入っていくこと。
  • ステップアウト
    • ステップインでサブルーチンに入ったとき、そのサブルーチンの最後まで自動で実行させること。
  • ステップオーバー
    • ステップインをしてサブルーチン内でステップ実行を行わず、そのサブルーチンの処理が終わった地点(要するに次ぎの処理)まで自動のステップ実行で移ること。このステップオーバーなどを使い、プログラム解析の不要な作業を減らす。