YouTube

Got a YouTube account?

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

Japanese subtitles

← 05-01 Bug Categories

Get Embed Code
2 Languages

Showing Revision 2 created 06/24/2014 by Fran Ontanaya.

  1. デバッグコース第5レッスン
    不具合の再現へようこそ
  2. 以前のレッスンでは
    可能性のあるさまざまな発生源から
  3. 不具合を見つけ出すために科学的手法を応用し
    依存関係をさかのぼることで
  4. 不具合の原因を系統的に突き止める技術を確認しました
  5. ただしこの研究室でプログラムが失敗すること
  6. 何らかの形で以前の状態にアクセスできること
    さらに情報が得られる場合に
  7. 少なくとも適切な実験を実行できると
  8. 今のところ仮定しています
  9. 実際の現場で失敗するプログラムと
    これを比較すると分かることは
  10. プログラムが失敗したこと
    さらにヒントが少ししかないことです
  11. しかし全体的に研究室で得られるものと比べて
    記録にムラが多いのです
  12. ここで必要になるのが再現です
  13. 実際にデバッグができるように
    失敗する実行を研究室で
  14. 再現する必要があります
    それはなぜでしょうか?
  15. 実行を観察できるようにする必要があるからです
  16. 一度不具合を再現できれば
  17. 思いのままに実験を行い観察することができます
  18. これはもちろん不具合の検出に非常に有効です
  19. 次に修正をチェックできるようにする
    必要があるからです
  20. バグを再現できなければ
    それを修正できたと確認できません
  21. つまり不具合がもう起きないかどうかです
  22. バグの再現はその修正よりもはるかに難しいでしょう
  23. バグを4つのカテゴリに分類する業界用語があります
  24. 1つ目はボーアの原子模型から名づけられた
    ボーアバグです
  25. これは よく解明されていないが明確な条件下で
  26. 確実によく現れる反復するバグです
  27. 次は料理物理学のハイゼンベルグの
    不確定性原理から名づけられたハイゼンバグです
  28. これは調べたり検出しようとすると
  29. 動作を変えたり消えたりするバグです
  30. 次はマンデルブロ集合から名づけられた
    マンデルバグです
  31. これは動作をカオス的に見せたり非決定性にするほど
  32. バグの根底原因がとても複雑で不明瞭なバグです
  33. 最後は重要なシュレーディングバグです
  34. これは"シュレーディンガーの猫"から
    名づけられたMITの専門用語です
  35. ご存知ですよね?
    猫が箱に入っている状況を想像してください
  36. 猫が生きているか死んでいるかは
    箱を開けるまで分かりません
  37. これがソースを読み込んだ時または
    プログラムをいつもと違う方法で使用した時に
  38. プログラムがまったく動かないことに
    気づくまで現れないバグです
  39. この時点で修正されるまで
    プログラムが動作しなくなります
  40. これらのバグカテゴリは
    バグを再現する時の難しさも表しています
  41. これは私の経験上
    再現するのが特に大変だったバグの例です
  42. 常にクラッシュするCプログラムがありました
  43. 非常に単純化されたバージョンで
    こんな感じです
  44. このプログラムを通常どおり実行すると
    クラッシュします
  45. アサーションは失敗します
  46. しかしデバッガで実行すると問題なく動きました