[？ DAN ARMADARAS：？]こんにちは、 私は[よ？ダンArmadaras？]。
今日、我々はするつもりです デバッグを見ています。
だけでなく、我々がしようとしています いくつかのテクニックについて話します、
だけでなく、我々が見てするつもりです 特徴のいくつかを含有
許可CS50のIDE内で あなたは簡単にプログラムをデバッグします。
>> のほんの一例 間違って行くことができるもの
それは実際に何か 我々は既に前に見たこと。
この場合、これは、Cプログラムであります すなわち、ユーザからの整数を受け付け
2で除算し、提供 バックユーザに出力。
今、私たちが見てきたものから 以前の講義で、
私たちは、これが実際に原因となりますことを知っています 分割問題の特定のタイプ
私たちは、奇数を持っている場合。
>> 具体的には、私たちは捨てますよ 小数点以下のもの。
今、私たちはこのことを知っています ケースであることを起こります。
そして、我々はそれを実行した場合、我々は確認することができます コンパイルすることにより、私たちの疑惑は、まず、。
そして、実行していることにより、 奇数番号を入力します。
>> これは新しいものではありません。
しかし、これは実際にあります そのバグの例
より大きなプログラム内に存在することができます それがダウンして追跡することが困難になります。
私たちはどのような問題を知っているにもかかわらず 、問題の真の核心であります
識別しようとしている可能性があります 具体的にどこでエラーが発生し、
何その問題を特定します であり、そしてそれを固定します。
だから例としてこれを提供 何かが何であるかの
我々はすでに知っているが、埋め込むことができること コー​​ドの他の要素の中。
>> したがって、この他のソースを開きます 例として、コードファイル、
この部門の問題は今あります 大きなプログラムの一部。
まだ少しあるかもしれません 少し不自然な、と私たち
簡単にすることができるかもしれません 特に、それを識別
私たちはこれを議論しているからです。
しかし、我々はこのことを把握することができます 問題は、より大きな規模で存在することができます。
>> 私は今、これをコンパイルした場合 それを実行し、奇数番号を入力し、
我々は正確に取得しないことがわかります 我々が期待している可能性があり、出力。
この特定の場合において、 我々は、我々が言うかもしれません
数字のすべてをカウントします いくつかの特定の数まで1から。
そして、我々は、我々を見ることができます さまざまな問題を持っています
ここで我々は、単純に、0を出力している場合 1私たちは5の入力を提供します。
>> だから我々はすでに知っていること ここでの問題があります。
しかし、我々は正確には知らないかもしれません この問題は、実際に存在する場合。
今その方法の1つを 我々はこの問題を解決しようとすることができます
私たちがきたものです 既にに導入されて。
私達はちょうど大規模にそれを使用することができます。
>> 14行目では、我々は持っています このprintf関数、
私たちは状態をプリントアウトすることを可能にします 各種情報の。
そして、これは何かであることを プログラム内で利用してください
です正確に何を把握しようとします コー​​ドの様々なラインで起こっ。
これはない場合であっても 最終的な出力実際に我々
外に演出したいです このプログラム、まだ我々
いくつかのデバッグを持っている可能性があります ステートメントたち
正確に何を把握しようとすることができます 我々のコードの内部で起こっています。
>> したがって、この場合には、私は意志 デバッグタグが付けられたのprintf。
この場合、これは 単にデバッグ文字列
それはなるように、私はアップ入れていること 私のコードの出力は非常に明確な
何それは私が表示したいということです。
ここと出力数を 我々が計算されていること。
>> この場合、私はかもしれません 正確に知りたいです
何が前に起こっていると いくつかの特定の演算後。
だから私は前のprintfを使用する場合があります そのコード行の後。
この場合、私もできました それはもう少し明確にします
前にデバッグを言って デバッグ後にそう
私は自分自身を混同しないこと 同じに見える複数の行。
>> 今、私たちは、このファイル名を指定して実行を再コンパイルする場合 それは、再び5のように番号を入力し、
我々は持っていることがわかります 今の前と後の出力
我々は明確に行っていないことがわかります 数の持つ部門またはクリア
私たちは実際にやってみたいこと。
今、この場合、これは 本当にクリア出力。
それは本当に明確な結果ではないこと 我々は、この特定のプログラムの外にしたいです。
>> そして、これは、再び、あります 少し不自然。
しかし、おそらく、そのことの一つ 仕様が言った場合、私たちは何ができます
私たちはすることによって、これを分割したいこと 2および他の言葉でそう1--を追加し、
我々はその後、up--丸めます 私たちができたことを知っているかもしれません
この場合には、その特定のことを行います。
今ここに私たちがなることを知っています 私たちの半分の数に1を追加すること。
>> それでは、これを再コンパイルしてみましょう このことを確認します
我々が望むように動作しています。
私たちは今、前にそれを見ることができます た、我々は数5を持っています。
た後、我々は、数3を持っています 私たちの仕様に従っています、
私たちがやりたいことです。
しかし、私たちが見ている場合 ここで、出力、私たちすることができます
私たちは別のものを持っている可能性があることがわかり で完全にバグ、
我々は0から我々のカウントを開始していること。
>> 今再び、これは何かであります 我々は、過去に見てきたこと
我々は非常に容易に修正することができます。
しかし、この場合には、我々 また、利益を持っていました
printf文を使用します 直接forループの内側
正確にどこに知っています そのエラーが発生しました。
だからのprintf文は、 うえで非常に有用
あなたは場所を決定、 正確にソースコードで、
具体的なエラーが発生しています。
>> そして、それは実現することも重要です その、私たちはコードを書いているように、
我々は仮定を持っている可能性があります プログラムの状態について。
それとも仮定を持っている可能性があります プログラムのどの部分について
実際に正しいか間違っているとき 後で、我々はそのプログラムに構築します
その一部にします 複雑で大きなプログラム
我々はそのいくつかの側面を実現すること そのことを実際にバグがあります。
>> printf関数を使用すると、実際に助けることができます 絞り込むと識別
プログラムの地域ということではないかもしれません まさに我々の方法を振る舞うこと
私たちの仮定に基づいて、期待しています。
しかし、他のツールがあります 利用できるだけでなく、
それは、私たちが理解しようとすることができます エラーが発生している場所を
また、具体的には、どのようなもの プログラムの内部で起こっています。
>> だからprintf関数を使用することは非常にあり 便利なときに私たちが望みます
の特定の領域を識別するために いくつかのバグを持っているプログラム。
しかし、それはまたになります しばらくして退屈。
この場合、これは 比較的簡単なプログラム
ただ一つまたは二つの変数を持ちます。
そして、それは私たちのために非常に容易になります これらの変数の値を印刷
より大きなプログラムのコンテキストインチ
>> しかし、我々は異なるがあるかもしれません 多くの変数を持つプログラム。
そして、それはかなりではないかもしれません printfのを非常に使いやすいです
何が起こっているかを評価しようとします これらの変数のそれぞれに
プログラムとして実行されています。
存在するプログラムがあります デバッガプログラムと呼ばれます。
この場合、一つは、我々は、意志 使用は、GDB GNUデバッガですか、
それは、私たちが内部を検査することができます はるか内のプログラムの仕組み
詳細な方法。
>> 私たちは、実際に実行することができます コマンドラインからGDB
ここで、単にGDBと入力して、 我々はデバッグしたいコマンド。
この場合、カウント。
今、この場合には、我々はそのことを見ることができます GDBを言うプロンプトに私たちをもたらします。
そして、我々は実際にすることができます GDBにコマンドを実行します
実際の実行を開始します プログラムは、特定の時点でそれを停止し、
変数を評価し、 その変数を検査
プログラム状態で存在します その特定の瞬間に、
などなど。
それは、私たちに多くの電力を提供します。
>> しかし、それはちょうどそう起こります また、CS50 IDEは、
GUIまたはユーザーに提供 GDBのためのインターフェースこと
私たちが必要とすることなく、これを行うことができます いかなるコマンドラインインターフェース
またはまったくさえ。
私はそれにアクセスすることができる方法 デバッグボタンを使用することです
CS50 IDEの最上部にあります。
今、過去に、我々は何を持っています 見我々はコマンドを使用することです
コンパイルして、プログラムを実行するためのライン。
>> デバッグボタンがありません これらのステップの両方。
しかし、それはまた、起動されます 右端のデバッガタブ
それは、私たちは多様性を検査することができます プログラムの特性
それが実行されます。
私はこの中で、デバッグをクリックすると、 場合、それが起動します
コンソールで新しいタブ 一番下にあるウィンドウ。
>> そして、あなたは、このタブが持っていることがわかります 非常に上部にいくつかの情報。
そして、私たちは主にこれを無視することができます。
しかし、物事の一つ 私たちは気づくしたいこと
それを出力することです その私たちは同じこと
私たちがmakeを実行しようとした場合になるだろう ターミナルウィンドウで、Cプログラム。
>> ここで、我々はそれが打ち鳴らすを実行している見ることができ、 そして、それはフラグの様々なを持っています、
そしてそれは、私たちのcount.cファイルをコンパイルしています その時点で選択されたタブでした
私はデバッグを打つこと。
だから、これは非常に便利です 今、このデバッグ]ボタンを使用して、
我々は同時に、次にコンパイルしてできます 実際に私たちのプログラムを実行
実行したいです。
>> あるフラグの一つ この場合、重要なのは、
私たちは、実際に使用してきました 最も長時間
だけでなく、単にいくつかの手をしました 手を振っ[聞こえない]、これ
これはここです。
打ち鳴らすには、-ggdb3を言います。
この場合、私たちは何をしています 打ち鳴らす言って、私たちのコンパイラ、
我々は我々のプログラムをコンパイルしたいということです。
しかし、またあるものを提供 呼ばれるシンボル情報
コンパイラは、実際にアクセスできるように 基礎となる多くの情報へ
プログラム内に含まれます。
>> より具体的には、数 私が持っている機能の、
これらの関数の名前は、 変数、タイプ
これらの変数は、と多様であることを デバッガを助ける他のものの
その操作を実行します。
今何か他のものがあります それは言及することが重要です
我々はランニングを議論しているとき このようにプログラム。
>> それが実際に持っていることに注意してください 私たちのコンソールで新しいタブを育てました
下部に沿って。
私たちはもはや対話する必要はありません 直接ターミナルウィンドウで。
しかし、この新しいタブがあります 実際にターミナルウィンドウ。
それはちょうど、実行中に固有のものです 私たちが作成したプログラム。
>> で、一番下にあることに注意してください いくつかの出力との組合せ
コンパイラとGDBを打ち鳴らすことにより、 これは我々が大幅に無視することができ、
実際の出力を示します 一番下に私たちのプログラム。
今では実現することが重要です その実際にこの一つの窓
あなたが表示されます あなたのプログラムからの出力
しかし、入力を受け入れることができます そのプログラムの、同様に。
>> そう言うの通知 番号を入力してください、
これは私達が持っていた同じ出力であります 前ターミナルウィンドウでいました。
しかし、それは今、この新しいタブに表示さです。
私は、入力数をすることができます。
そして、それは実際になります 我々が期待どおりに機能します
私たちのデバッグ出力を示し、 バギーかもしれない出力、
我々は前に見てきたように。
そして、一番下に、それを 実際にいくつかの追加の出力を持っています
GDPからちょうどそれを言って このプログラムは完了しました。
>> 今、あなたはこので見たように 特定の実行、
それは特にありませんでした でもために有用
私たちが持っていたものの、デバッガメニューが来ます アップ、これはまだ実行中のプログラムでした。
どの時点においても、実際にそれをやりました 私たちのために実行を一時停止
の全てを検査することができるようにします 変数は内に含まれます。
何か他のものがあります 私たちは順番に行う必要があること
私たちが望むことを認識することがGDBを取得します プログラムの実行を一時停止します
そしてちょうどそれを進行させません 通常、我々は、他の場合と同じように。
>> 実行を一時停止するためには、 いくつかの特定の行で、
私たちは何を作成する必要があります ブレークポイントと呼ばれます。
そして、ブレークポイントは、非常に簡単に作成されています この中にあなたのマウスを取ることによって、IDEをCS50
そして左に直接クリック いくつかの特定の行番号の。
私はそれを行うならば、赤い点 示しており、表示されます
そのその行は現在のブレークポイントです。
>> そして、私は、GDBを実行する次の時間、それを そのブレークポイントで実行を停止します
それは、コードのその行に到達したとき。
さて、これは重要です 実現するもの
それは必ずしもではないこと ケースのコードのすべての行
実際にアクセス可能です。
私は関数を作成した場合 example--空隙f--ため、ここにアップ
ちょうどこんにちはhere--印刷行を行います 私はこの関数を呼び出すことはありません場合は、world--
その場合になります、 私はここにブレークポイントを設定した場合、
関数が呼び出されることはありません。
従って、この 特定のブレークポイント
実際に一時停止することはありません プログラムの実行。
>> それでは、私が正しく作成することとしましょう コー​​ドのいくつかの行にブレークポイント
それが実際に実行されます。
今、この場合、これは main関数の最初の行。
だから、それは確かにケースになります それは、私が実行を開始するや否や、
非常に最初の行に達することになります。
GDBは、実行を一時停止します。
そして、私のことができるようになります デバッガと対話します。
>> あなたは、複数行を設定することができます ご希望の場合は、ブレークポイントを設定します。
また、ラインアップを作成することができます ここでは、コードのこのセグメントで
それに達することはありません。
そして、我々はまた、以下のいずれかを設定することができます。
理由私たちは希望 我々はよこれをしたいです
より少しに行きます 一瞬のディテール。
だから今のところ、私はちょうど無効にしましょう これらの追加のブレークポイント
我々は何が起こるかを見ることができますように 私は1つの単一のブレークを持っている場合
私のプログラム内のポイント。
私が作ったいくつかの このプログラムへの変更。
だから私はそれを保存する必要があります。
私ができるように私は、デバッグをクリックします コンパイルを開始し、その後、
デバッガの実行。
>> 我々は、表示され、その瞬間、後 私たちは休憩として選択された行
ポイントは黄色で強調表示されます。
また、中にいることに気づくことができます デバッグパネルの右上
一時停止アイコンが変わったこと 少し再生アイコンに。
これは私たちがポーズを有することを意味します この特定の場合に実行、。
そして、再生ボタンを打つことになります 私たちが実行を再開することができます
その特定の時点で。
>> 他のカップルがあることに注意してください このデバッグパネルで使用可能なボタン、
同様に。
に私を可能にする、ステップオーバー コー​​ドの1行を実行
とにその行にステップオーバー この場合の次の1、、、
printfのことを意味します ステートメントが実行されます。
そして、それはその後、一時停止します そうのようなライン13上での実行、。
>> そして、ステップもあります 関数に、どの
私は他を作成している場合に便利です 他の場所で、ソースコード内の関数。
そして、私はにステップインしたいです これらの関数ではなく、
全体としてその機能を実行します。
しかし、我々はステップでより多くのを見てみましょう 一瞬で関数に。
今ではいくつかの他の事に気づきます 実際にこのデバッグパネル内に存在します。
>> 私たちは、このパネルが呼び出され 私たちを示し、コールスタック、
まさに、私たちはどこにいます。
ここでは、内部にあります 主な機能の。
私たちのスクリプトがcount.cと呼ばれています。
そして、私たちは上のことが起こります 行13、列1、どの
されている正確にどのようなハイライト領域 ソースコードのだけでなく、を示しています。
>> 今これがまた表示されていることに気付きます ローカル変数セクションの下
その変数のすべて この関数内に存在します。
それは注意することが重要です 変数のすべてのこと
このローカル変数に表示されます 関数内のセクション、
それらが定義されていても前に。
私たちは、変数を持っていることをここで見ることができます NUMと呼ばれ、0のデフォルト値が、
それはint型です。
>> 今、私たちが実際に初期化する前に これらの変数の全て、
私たちは必ずしもじゃありません 0の値を参照することが保証。
そして、他の実行に応じて、 あなたが実行したこと
そしてあなたの記憶時の状態 あなたが実際にこのプログラムを実行し、
あなたがいることを見つけるかもしれません 0の値が表示されません
そして、その代わりに、他のいくつかのクレイジーな数字。
>> しかし、心配しないでください。
それはまで関連することはないだろう あなたが実際に値を初期化します。
今、この場合には、我々はそれを見ることができます 私はいくつかの出力を行いました。
そして、私は、今、実行を一時停止しています。
しかし、この場合には、どのような 私は本当にやりたいです
今、この行をステップオーバーすることです コー​​ドのように、私は実際にできること
そのint型のためにユーザに問い合わせること 我々は我々のプログラムで使用します。
>> 今、この場合には、時 私は、通知をステップオーバーヒット
それはむしろ一時停止または再開 ボタンを押すと、この一時停止ボタンに変更されました
このコードが実際に実行されているので。
何が起こっている 今それがあるということです
入力に私たちのためにいくつかの情報を待っています 私たちは、出力テキストで見ることができるように
一番下にあります。
>> だから、今、これは 実際に一時停止していません、
それは、一種の、表示されるにもかかわらず、 何が起こっていないためであると。
しかし、それはちょうどので、その中でも起こり ライン13上の私の特定の場合、
私は、ユーザーの入力を待っています。
だからGDBは検査することができません それのようなプログラムが実行されています。
>> 私はいくつかを入力してください今すぐ次回 、私はその番号5を入力しますので、input--
我々は見てきたように ヒットリターンをpast--、我々
予告、その直後に、GDBの一時停止 そして、再び、次の行を強調表示します。
しかしとして、今ことに気づきます 私たちが値を入力した結果、
我々は内部のその値を更新しました これは私たちのローカル変数の
正確に知っていることは非常に便利です その数は、メモリに何でした。
>> 今私は、このプログラムを継続できるようにすることができます その実行が終了するまで演奏
再開]を押すことで。
我々は非常に迅速にそれを見ることができます プログラムの仕上げは実行ん
私たちと同じ出力を持ちます 以前と、デバッガが閉じ、
そして今、このプログラム 完全に停止しました。
>> 私だけのためにあることを示します 何を見ての目的
私たちが実際に再開を打ったときに発生します。
しかし、我々は実際に行っています このプログラムに戻りたいです
我々は、デバッグしようとすることができるように 正確に何が起こっているのか。
私は、デバッガを使用していることを今、私はかもしれません これらのデバッグのprintf文を必要としません。
>> いただきますよう、私はそれらを削除することができ 今ちょうど私たちの単純なコードに戻ります
私たちは一瞬前に持っていました。
今、私は保存するとき プログラムし、それを実行し、
それは、再び、その初期に移動します 私は11行目に与えた点を破ります。
そして、私は検査することができるでしょう 私の変数は私がやりたいよう。
>> それはちょうどので、このことが起こります 部分は、非常に興味深いものではありません
そして私は、私はつもりだことを知っています この文を印刷します。
番号を入力してください。
そして、私はつもりだことを知っています その整数をユーザーに依頼します。
だから多分、私は実際に私を移動したいです 少しさらに下のポイントを破ります。
>> あなたは、ブレークポイントを削除することができます 直接、もう一度、クリックして
その行番号の左に。
赤い点が表示されなくなります。すなわち、示します そのブレークポイントがなくなっていること。
今、この場合には、 実行が一時停止されています。
そしてそれは実際に起こっていません その特定のインスタンスで再開。
しかし、私は休憩を設定することができます 少し後にポイントします。
>> そして、私は今、私を再開したとき コー​​ド、それが再開し、教えてくれます
そのブレークポイントのポイント。
繰り返しますが、私は再開を打ちます。
何が起こっているように見えるしていません。
しかし、それは私のためです コー​​ドが入力を待っています。
私は、数5を入力しEnterキーを押すと、なります これで次のブレークポイントがヒットします。
>> 今、この場合には、この コー​​ドの行は、
それは、前に、私たちは知っていました バギーであることが起こりました。
それでは、何が起こるかを評価しましょう 時間内に、この特定の時点で。
ラインが​​強調表示された場合、この 行がまだ実行されていません。
したがって、この場合には、我々が見ることができます 私は数を持っていることをします
私はと呼ばれる整数を持っています 値5を有しNUM。
そして、私は実行するつもりです その番号にいくつかの数学。
>> 私はそれをステップオーバーした場合、我々はできます numのその値に気付きます
に応じて変更されています 私たちが実際にやった算術。
そして今、我々はしていること このforループの内側
または今そのループのための 自身が強調表示され、
我々は新しいを持っていることを確認 変数iと呼ばれること
ループのためにその中で使用されようとしています。
>> 今では私が前に覚えています 時には、あなたがしていることに言及
狂気のいくつかの種類を見に行きます その番号の前にデフォルトとして数
またはその変数があります 実際に初期化されました。
私たちは、正確にそれを見ることができます ここでは、この変数に
なかった、Iと呼ばれます まだ初期化されて
ハイライトの時。
しかし、我々は、それはいくつかの番号を持っていることがわかります 私たちは実際には期待していないこと。
>> それで大丈夫です。
ご心配なく 私たちは実際には持っていないので、
私までその数を初期化 このラインと値をステップオーバー
私は、値を1に初期化されています。
だから、実際にだことを確認します 場合は、のステップオーバーしましょう​​。
我々は今それを見ることができます 行が実行されています。
そして、我々は今、ハイライト表示さ​​れています このprintfのライン。
>> そして、我々は今、どのように私たちの価値観を見ることができます iと3は、時間の経過とともに変化しています。
これは、実際には、行うことは非常に便利です、 繰り返し行をステップオーバーすることです。
そして、あなたは実際に何を見つけることができます あなたのforループの内部で起こります
そして、何が起こるに そのループの内部変数
そのプログラムの実行など 一度に一つの段階で起こります。
>> 今、この時点で、私 ちょうど十分なステップオーバー
私は今、私のプログラムの終了時だということ。
私はそれをステップオーバーした場合、それはなります 実際に実行を停止
我々は、過去に見てきたように。
そう、私は再び、これを再起動してみましょう 私が何かを指摘することができ、
同様に。
>> この場合には、それは 今再び、私を求めて、
数の、どの 私は、もう一度、入力します。
しかし、この時間は、私がに入力するつもりです forループのように、より多く
複数回繰り返されます。
この場合、私は行きますよ 11の値を入力します。
>> ここでもう一度、私は設定したいので、 15行目にブレークポイント、
それは、その行をハイライトになるだろう。
我々は、我々のことを見ることができます 数11は正しくあり
私たちのローカル変数で表します。
我々は今、その上でできるステッピング 私の私たちの価値に何が起こるか見て
我々はループのために、この内部に進むにつれて。
これはすべての時間、私たちをインクリメントします そのループのトップに到達。
>> ものの一つ今それかもしれません 実行中に行うことが有用です
このプログラムの実際に私のためにあります 確認するために、変数の途中を変更
何が私のプログラムに発生します。
この場合、私は実際にすることができます double値をクリックします。
それがテキストフ​​ィールドになっていることに注意してください。
>> 今私は別の入力することができます 完全値
私のプログラムがどのように動作するか確認してください 私はその変数を変更したとき。
今、この場合には、変数 私は今値10が含まれています。
しかし、プログラムがまだあります 実行中に一時停止しました。
私はステップオーバーすると、私はそれを参照してください。 私は10として入力された値I、
NUMの値より大きくない場合、 これはすぐにループの原因
実行を停止します。
>> 今では唯一ではありません 理由は、あなたが希望
場所に変数を変更したいです。
あなたが実際にお勧めします ので、それを修正しようとします
あなたが続けることができること ループの実行
またはそのように変更することができます その前にいくつかの値
演算のいくつかの特定のセットに到達します あなたが実行しようとしていること。
>> だから今、私たちが実際に変更することを プログラムとして、iの値は、実行していました
それが終了するためのループを引き起こし 途中で私は、突然、理由
値よりも大きくなるように起こりました NUMの、そのそのループのための意味
もはや実行する必要はありません。
さらに、それがあることを起こっ 我々は、iの値を変更した場合
17行が強調表示されたときに、 時点でした
ループ実行のためにその 実際には評価されていました。
>> 私は、の値を変更した場合 私は別の行に、19を言います
我々は異なる見ているだろう 動作ライン19になるため
ループの前に実行しました 条件が再評価されました。
今、この時点で、私は、再び、 このプログラムの終わりに。
そして、私はこれがに進むできるようにすることができます 私のプログラムが自然に終了することができます。
しかし、物事のカップルがあります 奪うために重要であること
この特定の議論から。
あなたが評価する必要があります 独自の前提条件
方法についてのコードは動作しなければなりません。
あなたには、いくつかの作品だと思いますいつでも あなたが知っているコードが動作するように起こるの、
それは行くために赤い旗であるかもしれません 背中と評価し、確認してください
あなたの仮定のこと どのようにコードが動作しています
それがどのように実際には真であります ソースコードで表されます。
>> しかし、さらにポイントにしました、 私たちは、デバッガを使用しているときに、
あなたはにブレークポイントを置くことができます コー​​ドの異なるライン、
これにデバッガを引き起こします これらの行のそれぞれで実行を一時停止
あなたが評価できるように でもメモリや場所に変更します。
そして再び、あなたができることを覚えておいてください あなたように、複数のブレークポイントを作成します
また、実行を再開することができ、スキップ コー​​ドの大部分の上、
そして、それは自動的に一時停止します 次のブレークポイントで。
>> 実際にはより高度なあります デバッガの機能だけでなく。
しかし、私たちはあなたを参照する必要があります いくつかの後続の動画へ
実際にどのように離れていじめるために これらの特定の機能を使用しています。
今のところ、ありがとうございました 見ための非常に。
幸運のデバッグ。