Return to Video

01-18 How Failures Come To Be

  • 0:00 - 0:05
    プログラム状態が連なって
    プログラムを形成しています
  • 0:05 - 0:09
    それぞれのプログラム状態は
    変数と値からできています
  • 0:09 - 0:14
    プログラムを実行すると
    これらの状態は新しい状態に変えられます
  • 0:14 - 0:19
    例えば変数を読み取って書き出す行為です
    これがノーマルモードです
  • 0:19 - 0:24
    しかし初めはノーマル入力だったのに
    ここで最後に不具合が出ています
  • 0:24 - 0:29
    プログラム内に問題の原因となる
    欠陥があるということです
  • 0:29 - 0:33
    実行したこの命令文に欠陥があると仮定しましょう
  • 0:33 - 0:38
    今起きていることはなんですか?
    実行します
  • 0:38 - 0:42
    プログラム状態にエラーが出ました
    これが感染です
  • 0:42 - 0:47
    この感染はおそらく
    他の状態へと拡大されていきます
  • 0:47 - 0:52
    そして最終的に
    ユーザにも不具合が見える形になります
  • 0:52 - 0:56
    ここで起こっているのは原因と結果の連鎖です
  • 0:56 - 1:01
    不具合つまり感染が確認できます
    前の感染が原因で起きています
  • 1:01 - 1:11
    原因となる感染がない状態の場合
    入力状態は問題ないですが
  • 1:11 - 1:16
    出力が感染しています
    この時に実行した命令文を見ます
  • 1:16 - 1:20
    感染なしの状態を
    感染状態に変えた原因となる命令文です
  • 1:20 - 1:26
    これが感染の原因となった命令文
    つまり欠陥のある命令文なのです
  • 1:26 - 1:31
    デバッグする時は
    この原因と結果の連鎖の特定が必要です
  • 1:31 - 1:36
    特定するだけでなく
    この連鎖を中断させる必要もあります
  • 1:36 - 1:42
    欠陥から不具合に至る連鎖を中断させれば
    デバッグは終了です
  • 1:42 - 1:47
    簡単そうに見えますが
    実際は見た目よりもはるかに複雑です
  • 1:47 - 1:51
    欠陥がすべて不具合の原因になるわけではないからです
  • 1:51 - 1:56
    この欠陥が感染を起こしていたとしても
    本物の感染のように
  • 1:56 - 1:59
    拡大していくものではありません
  • 1:59 - 2:03
    感染は広がらずユーザにも見えない
  • 2:03 - 2:08
    他に不具合も引き起こさないし
    欠陥のある命令文もありません
  • 2:08 - 2:14
    ある特定の状況下でだけは感染し
    不具合を起こすことはあるかもしれません
  • 2:14 - 2:18
    これは実験上の話なので
    プログラムは何度も作成できます
  • 2:18 - 2:24
    不具合も欠陥もありませんが
    いざ本当にプログラムが失敗すると
  • 2:24 - 2:33
    つまり実際に不具合を確認した場合は
    原因となった欠陥をたどることになります
  • 2:33 - 2:38
    原因と結果の連鎖をたどることで
    常に修正することはできます
  • 2:38 - 2:43
    しかしここでまた問題が生じます
    状態が大量にあるいうことです
  • 2:43 - 2:50
    数えてみるとここには変数が12ありますね
    かわいいものです
  • 2:50 - 2:57
    実際にはこのような変数が一万あります
    一万あるのは変数だけではありません
  • 2:57 - 3:02
    欠陥と不具合の間に
    一万ステップあるということです
  • 3:02 - 3:06
    ですから原因と結果の連鎖をたどることは
  • 3:06 - 3:10
    この画面上の状況よりも
    はるかに複雑なものとなります
  • 3:10 - 3:14
    原因と結果の連鎖が長ければ
    処理する時間も長くなりますし
  • 3:14 - 3:19
    処理する状態も増えて
    デバッグがますます困難になります
  • 3:19 - 3:23
    状態が大きければ
    感染をさらに調査しなければなりません
  • 3:23 - 3:27
    こうしてデバッグがどんどん難しくなるのです
  • 3:27 - 3:31
    干し草の山の中から針を見つけるくらい至難の業です
  • 3:31 - 3:37
    想像を絶するほど大きな
    干し草の山になることもありえます
Title:
01-18 How Failures Come To Be
Video Language:
English
Team:
Udacity
Project:
CS259 - Software Debugging
Duration:
03:36

Japanese subtitles

Revisions