YouTube

Got a YouTube account?

New: enable viewer-created translations and captions on your YouTube channel!

Japanese subtitles

← 05-20 Capturing

Get Embed Code
3 Languages

Showing Revision 1 created 06/09/2014 by K2480.

  1. 実際にプログラムが失敗した場合
    最初は再現が難しくなります

  2. 効率よくデバッグを行うために
    必要なデータがないからです
  3. しかし実行するプログラムがある場合は
    デバッグが楽になります
  4. 基本的には現場にあるたくさんの実行を
    十分に利用することです
  5. たくさん実行すると少し失敗も見つかります
  6. またたくさん実行すると多くのパスも見つかるでしょう
  7. 統計学的に失敗と関連づけられる実行特性を
    見つけることができるのです
  8. 特性はプログラムの各部分の実行にあるかもしれません
  9. 例えば失敗しない実行においては
    ある関数が呼び出されず
  10. その関数が失敗する実行で
    必ず呼び出されているという情報を得たとします
  11. 何がエラーを起こしているのか突き止めるために
  12. 最初にf関数を調べる必要があります
  13. 別の実行特性を調べてもいいでしょう
  14. 例えば行、戻り値、変数値などです
  15. すべての特性が成功か失敗と関連していてるので
  16. デバッグする際には重要なヒントとなるのです
  17. これを生かすために実行特性を集める必要があります
  18. まずは実行された行から始めましょう
    分かりやすくシンプルな範囲だからです
  19. トレース関数を使用するといいでしょう
  20. トレース関数を使うと
    行ごとにアクセスされたかどうかが記録されます
  21. グローバル変数coverageを使い
    新しい行にアクセスするたびに
  22. ファイル名と行番号を抜き出します
  23. ファイル名と行番号を取得したら
    そのファイル名を見たことがあるかどうか確認します
  24. 見たことがない場合は新しい空のセットを作成します
  25. そしてこのファイル名で見つけたセットに
    行番号を追加します
  26. 再びトレーサを設定して
  27. HTMLタグのないシンプルなテキストで
    呼び出しましょう
  28. どの行に適用されているか確認します
  29. クリックして実行すると
  30. 4、5、6、8、9と続く行に
    適用されていることが分かります
  31. このコード内で適用されている行を
    マークしてみましょう
  32. 行4、5、6、8、9、11、13、15、16 、18ですね
  33. 適用されていない行は10、12、14です
  34. これはすべて ある値にタグやクォーテーションを
    設定する行です
  35. HTMLタグのないテキストを通した結果は正しいので
  36. まだカバーしていない行をチェックするための
    テストを行うべきだと考えられるでしょう
  37. そしてエラーがこれらの行の実行に
    関連していることも分かります
  38. まずは行を実行するかどうか
  39. マークアップする自動メカニズムを作りましょう
  40. 出力するプログラムを作成して
  41. 実行されていたら星印を行の初めにつけます
    されていないければ何もつけません
  42. これらの行に星印をつけたりつけなかったりする
    変換作業を行う必要があります
  43. ここが起点です
  44. すでにファイル名があるのでファイル名を開いて
  45. 行の配列としてコンテキストを読み込むことができます
  46. これが機能するか確認しましょう
  47. プログラム内の各行のリストが取得できました