ブレークポイント
ブレークポイントは、特定のポイントでプログラムの実行を一時停止する特別なマーカーです。これにより、プログラムの状態と動作を調べることができます。ブレークポイントは、単純な場合(たとえば、コード行に到達したときにプログラムを一時停止する場合)や、より複雑なロジック(追加の条件に対するチェック、ログメッセージの書き込みなど)を伴う場合があります。
設定したブレークポイントは、一時的なブレークポイントを除いて、明示的に削除するまでプロジェクトに残ります)。
ブレークポイントの種類
AppCode では、次のタイプのブレークポイントを使用できます。
行ブレークポイント : ブレークポイントが設定されたコード行に到達したらプログラムを中断します。このタイプのブレークポイントは、実行可能なコード行に設定できます。
例外のブレークポイント :
NSException(Objective-C の場合)またはError(Swift の場合)またはそれらのサブクラスがスローされたときにプログラムを中断します。これらは例外条件にグローバルに適用され、特定のソースコード参照を必要としません。シンボル的なブレークポイント : 特定の関数またはメソッドが実行されたときにプログラムを中断します。
ブレークポイントの設定
行ブレークポイントを設定する
ブレークポイントを設定するコードの実行可能な行でガターをクリックします。または、行にキャレットを置き、Ctrl+F8 を押します。

例外ブレークポイントを設定する
デバッグツールウィンドウの左側のブレークポイントの表示
をクリックするか、Ctrl+Shift+F8 を押します。
ブレークポイントダイアログで、Alt+Insert を押すか
をクリックし、例外のブレークポイントまたは JavaScript 例外ブレークポイントを選択します。
例外のブレークポイントの場合、プログラムを一時停止するタイミングを指定できます。例外がスローされたとき(任意)、または未処理の Objective-C 例外(Objective-C)または Swift エラーが発生したとき(Swift)です。

シンボリックブレークポイントを設定する
デバッグツールウィンドウの左側のブレークポイントの表示
をクリックするか、Ctrl+Shift+F8 を押します。
ブレークポイントダイアログで、Alt+Insert を押すか
をクリックし、シンボリックブレークポイントを選択します。
シンボル名を指定し、このブレークポイントをすべてのモジュールでヒットするか、特定のモジュールのみでヒットするかを選択します。

ブレークポイントの管理
ブレークポイントを除去する
行ブレークポイントの場合: ガターのブレークポイントをクリックします。
すべてのブレークポイントの場合: メインメニューから Ctrl+Shift+F8 を選択し、ブレークポイントを選択して、除去 Delete をクリックします。
誤ってブレークポイントを削除してそのパラメーターを失うのを防ぐために、エディターにドラッグするか、マウスの中央ボタンをクリックして、ブレークポイントを削除することを選択できます。これを行うには、に移動してエディターにドラッグまたはマウスの中央ボタンをクリックを選択します。ブレークポイントをクリックすると、それが有効または無効になります。
ブレークポイントのミュート
ブレークポイントでしばらく停止する必要がない場合は、ミュートできます。これにより、デバッガーセッションを移動することなく、通常のプログラム操作を再開できます。その後、ブレークポイントのミュートを解除して、デバッグを続行できます。
デバッグツールウィンドウのツールバーのブレークポイントのミュートボタン
をクリックします。
ブレークポイントを使用可能 / 使用不可にする
ブレークポイントを削除すると、その内部構成は失われます。パラメーターを失うことなく個々のブレークポイントを一時的にオフにするには、無効にすることができます。
行ブレークポイントの場合: 右クリックして、必要に応じて有効オプションを設定します。ブレークポイントの削除が割り当てられていない場合は、マウスの中ボタンで切り替えることもできます。
すべてのブレークポイントの場合: ブレークポイントの表示 Ctrl+Shift+F8 をクリックして、リストのブレークポイントをオン / オフにします。
ブレークポイントの移動 / コピー
ブレークポイントを移動するには、それを別の行にドラッグします。
ブレークポイントをコピーするには、Ctrl を押したまま、ブレークポイントを別の行にドラッグします。これにより、宛先に同じパラメーターを持つブレークポイントが作成されます。
ブレークポイントのプロパティを構成する
ブレークポイントのタイプに応じて、特定のニーズに合わせて操作を調整できる追加のプロパティを構成できます。最も使用されるオプションは、インテンションを介して利用できます。
ブレークポイントインテンションにアクセスするには、ブレークポイントのある行にキャレットを置き、Alt+Enter を押します。このオプションは、基本的なブレークポイントプロパティをすばやく設定する必要がある場合に使用します。
プロパティの完全なリストにアクセスするには、ブレークポイントを右クリックして詳細をクリックするか、Ctrl+Shift+F8 を押します。このオプションは、すべてのブレークポイントの鳥瞰図とその構成の完全な制御に使用します。
インテンションリファレンス
ブレークポイントのプロパティ
オプション | 説明 | ブレークポイントの種類 |
|---|---|---|
有効 | プロジェクトから削除せずに一時的にブレークポイントを無効にするには、チェックボックスをオフにします。無効にされたブレークポイントは、デバッグプロセス中にスキップされます。 | すべてのタイプ |
中断 | チェックボックスを選択すると、ブレークポイントに達したときにプログラムの実行が一時停止します。アプリケーションを一時停止すると、ログ情報を取得したり、特定の時点でプログラムを中断することなく式を計算したりする必要がある場合に役立ちます。ヒットしたときに依存ブレークポイントをトリガーするマスターブレークポイントを作成する必要がある場合は、そのブレークポイントでプログラムを中断しないように選択します。 | すべてのタイプ |
条件 | ブレークポイントを打つための条件を指定するために選択します。条件は、 この式はブレークポイントが設定されている行で有効でなければならず、ブレークポイントがヒットするたびに評価されます。評価結果が | 行 シンボリック |
ログ | 次のイベントをコンソールに記録するかどうかを選択します。
| すべてのタイプ |
評価して記録 | ブレークポイントに到達したときに式を評価し、その結果をコンソール出力に表示する場合に選択します。 | 行 シンボリック |
一度ヒットしたら除去する | ヒットした直後にプロジェクトからブレークポイントを削除することを選択します。 | 行 |
ブレークポイントに達するまで無効にする | 現在のブレークポイントをトリガするブレークポイントを選択してください。そのブレークポイントがヒットするまで、現在のブレークポイントは無効になります。再度無効にするかヒットした後も有効にしておくかを選択することもできます。 | すべてのタイプ |
未キャッチのみ | キャッチされていない例外でブレークポイントに達したときに通知を受けるように選択します。 | JavaScript 例外ブレークポイント |
スローされたとき | キャッチされた例外でブレークポイントに達したときにプログラムを中断することを選択します。
| 例外 |
捕らえられたとき | 例外がキャッチされたときにプログラムを中断する場合に選択します。 | 例外 |
ブレークポイントのステータス
ブレークポイントには、次のステータスがあります。
状況 | 説明 |
|---|---|
検証済み | デバッガーセッションを開始した後、デバッガーはプログラムをブレークポイントで一時停止することが技術的に可能かどうかをチェックします。はいの場合、デバッガーはブレークポイントを検証済みとしてマークします。 |
警告 | ブレークポイントでプログラムを一時停止することが技術的に可能ですが、それに関連する問題がある場合、デバッガーは警告を表示します。これは、たとえば、メソッドの実装の 1 つでプログラムを一時停止することが不可能な場合に発生する可能性があります。 |
無効 | ブレークポイントでプログラムを一時停止することが技術的に不可能である場合、デバッガーはプログラムを無効としてマークします。この最も一般的な原因は、行に実行可能コードがないことです。 |
非アクティブ / 依存 | ブレークポイントは、別のブレークポイントに到達するまで無効になるように構成されている場合、非アクティブ / 依存としてマークされますが、これはまだ発生していません。 |
ミュート | すべてのブレークポイントはミュートされているため、一時的に非アクティブです。 |
無効 | それはされているため、このブレークポイントが一時的にアクティブで無効。 |
中断しない | このブレークポイントには中断ポリシーが設定されているため、ヒットしたときに実行が中断されることはありません。 |
ブレークポイントアイコン
タイプとステータスに応じて、ブレークポイントは次のアイコンでマークされます。
行 | シンボリック | 例外 | ||
|---|---|---|---|---|
標準 | | | | |
無効 | | | | |
検証済み | | | ||
ミュート | | | ||
非アクティブ / 依存 | | | ||
ミュート無効 | | | ||
中断しない | | | ||
確認済みの一時停止なし | | | ||
無効 | | |||
生産性のヒント
- デバッグ印刷にブレークポイントを使用する
コードに出力ステートメントを挿入する代わりに、non-suspending ログブレークポイント(他のデバッガーではウォッチポイントと呼ばれることもあります)を使用します。これにより、デバッグログメッセージを処理する、より柔軟で集中化された方法が提供されます。
- ロギングブレークポイントをより迅速に設定する
non-suspending ロギングブレークポイントを設定するには、Shift を押しながらガターをクリックします。これはプログラムの実行を中断せず、代わりに
Breakpoint reached: MyClass.swift:36のようなメッセージを記録します。エディターの前にある式をログに記録する場合は、Shift を押しながらガターをクリックする前に、式を選択します。- ブレークポイントの説明を追加する
プロジェクトに多数のブレークポイントがある場合、検索を容易にするためにブレークポイントに説明を追加できます。これを行うには、ブレークポイントダイアログ Ctrl+Shift+F8 のブレークポイントを右クリックし、メニューから説明の編集を選択します。これで、ブレークポイント名の入力を開始すると、フォーカスが取得されます。
- ブレークポイントのグループ化
たとえば、特定の問題のブレークポイントをマークアウトする必要がある場合、ブレークポイントをグループに編成できます。これを行うには、ブレークポイントダイアログ Ctrl+Shift+F8 で、グループに配置するブレークポイントを選択し、メニューからを選択します。
- 並行性の問題についてプログラムをテストする
マルチスレッドプログラムが同時実行性に関して堅牢であるかどうかを確認する良い方法は、ヒット時に 1 つのスレッドのみを一時停止するブレークポイントを使用することです。単一のスレッドを停止すると、アプリケーションの設計上の問題が明らかになる場合がありますが、それ以外の場合は明らかではありません。
関連ページ:
コードのデバッグ
C/C++ /Objective-C および Swift コードのデバッグには、AppCode は Xcode にバンドルされている LLDB デバッガーを使用します。インストール / 有効化されたプラグインに応じて、他の言語で記述されたコードをデバッグすることもできます。デバッグセッション中に、デバッガーをアタッチしてプログラムを起動します。デバッガーの目的は、プログラムの実行を妨害し、内部で何が起こっているかに関する情報を提供することです。これにより、プログラムのバグを検出して修正するプロセ...
デバッガーセッションを開始する
デバッガーセッションの開始は、通常モードでプログラムを実行することに非常に似ています。デバッガーはバックグラウンドで接続されているため、デバッガーセッションを開始するために特別な設定を行う必要はありません。AppCode からプログラムを実行できる場合は、同じ構成を使用してデバッグすることもできます。プログラムをデバッグするたびに、デバッガーセッションは実行 / デバッグ構成に基づいています。AppCode を構成して、プログラムを起動する前に任意のパラメーターを使用し、任意のアクションを実行で...