1 00:00:02,090 --> 00:00:04,310 このセッションでは 2 00:00:04,477 --> 00:00:08,230 デバッガーとバグの見つけ方について 完結させます。 3 00:00:08,397 --> 00:00:12,440 decrement の定義を変えて 4 00:00:13,610 --> 00:00:14,350 わざと間違いを作ってみましょう。 5 00:00:14,660 --> 00:00:17,950 ここで、引き算のかわりに足し算にします。 6 00:00:19,160 --> 00:00:22,000 テストを実行すると testDecrement は失敗します。 7 00:00:22,157 --> 00:00:26,440 実行してよく見てみると 8 00:00:26,607 --> 00:00:30,550 count は 5 ではなく 9 になっていると わかります。 9 00:00:30,717 --> 00:00:33,540 つまりここでカウンターが作られているので 10 00:00:33,707 --> 00:00:36,120 このあたりの表現式に誤りがあるはずです。 11 00:00:36,690 --> 00:00:38,520 そこでコードを実行して カウンターが作られた直後で 12 00:00:38,800 --> 00:00:42,930 止めてみたいと思います。 13 00:00:43,630 --> 00:00:46,200 これでどのメソッドが間違っているか 14 00:00:46,720 --> 00:00:47,840 わかるはずです。 15 00:00:48,650 --> 00:00:51,400 ここに self halt を追加します。 これは Pharo でブレークポイントを 16 00:00:51,567 --> 00:00:55,040 設定する方法です。 メソッドをコンパイルして 17 00:00:55,207 --> 00:00:59,630 実行します。 コードが実行されて halt のところで止まります。 18 00:01:00,580 --> 00:01:01,710 Over をクリックします。 19 00:01:02,370 --> 00:01:04,850 Into でcount メソッドの内部に入ってみます。 20 00:01:05,017 --> 00:01:07,110 そうすることで 21 00:01:07,277 --> 00:01:09,790 count 値が nil で anInteger が 7 だとわかります。 22 00:01:13,500 --> 00:01:17,910 そして Over します。 23 00:01:20,770 --> 00:01:22,580 戻って、次は decrement です。 24 00:01:22,747 --> 00:01:25,730 また Into で内部に入って見てみます。 25 00:01:25,897 --> 00:01:27,540 問題はそこにあるはずだからです。 26 00:01:27,707 --> 00:01:29,680 すると decrement は -1 しなければ ならないことがわかります。 27 00:01:33,070 --> 00:01:35,680 修正します。 28 00:01:39,170 --> 00:01:41,000 そして Proceed をクリックします。 29 00:01:42,620 --> 00:01:47,530 Proceed をクリックすると halt が まだ残っているので、消します。 30 00:01:47,697 --> 00:01:51,490 Proceed すると、テストはグリーンになります。