最も包括的な iOS ブレークポイントのデバッグ

プログラマーとして、コーディング能力は生存の基礎です。コーディングは個人的な論理を撤廃することです。ことわざにあるように、「賢い人は考えれば間違いを犯すでしょう。」自分のプログラムが完全に正しいことを保証できる人はほとんどいません。したがって、プログラミング作業においては、コード デバッグ ツールが非常に重要です。かなり重要。デバッグ ツールのアーティファクト lldb は Xcode に統合されており、コード内の隠れたエラーを簡単に見つけることができます。この記事では、それについて包括的に紹介します。

Xcode でブレークポイントを追加するのは非常に簡単です。左側のコード行をクリックすると、ブレークポイントの追加を意味する青いラベルが表示されます。

640?wx_fmt=その他

 

次に、ブレークポイントのプロモーション操作を見てみましょう。

1 Ctrl + ブレークポイント/ブレークポイントを右クリックし、ブレークポイント編集メニューを表示します。

 

640?wx_fmt=その他

「ブレークポイントの編集」をクリックして、ブレークポイント編集用のサブメニューを表示します。

 

640?wx_fmt=その他

 

位置 1 の Condition は、ブレークポイントのトリガー条件を制御するブール式を入力します。位置
2 は、ブレークポイントを無視する実行回数を示します。
位置 3 は、ブレークポイントがトリガーされたときに追加のアクションを追加するために使用されます。 AppleScript、キャプチャ GPU フレーム、デバッガ コマンド、ログ メッセージ、シェル コマンド、サウンドの 6 つのタイプに分かれています。
3.1 添加 Log 输出信息:

640?wx_fmt=その他

 

パラメータは次のように説明されます。

3.2 添加 lldb 命令:

 

lldb コマンド

640?wx_fmt=その他

一般的に使用されるコマンドは次のとおりです:
1 po: コンソールの po コマンドに類似;
2 bt: 関数呼び出しスタック情報;
3 式: 変数値を変更; p / e と省略されます
4 スクリプト: Python スクリプト プログラムを入力します;
5 Facebook は Python 言語ベースをサポートしますlldb でサポートされている機能、オープン ソースの独自のより詳細なデバッグ プロジェクト: chisel
6 br / ブレークポイント リスト: すべてのブレークポイントのリスト;
7 スレッド バックトレース: 現在のスレッドのコール スタックを取得;
8 スレッド リスト: すべてのスレッドのリスト;
9 ターゲット停止 -フック:
9.1 在每次 stop 的时候去执行一些命令;例如:
(lldb) target stop-hook add -o "frame variable”、停止するたびにフレーム変数コマンドを実行します。10
9.2 target stop-hook list: 列出 hook 的所有断点;
9.3 target stop-hook del 编号: 删除 hook 的断点;
コマンド ラインは制御のデバッグを実装します。

 

c/Continue: 
次へ続行/n: 次の 
ステップ/s: 
終了終了/f: ジャンプアウト

以下を理解するには、Xcode グラフィカル インターフェイスを参照してください。

640?wx_fmt=その他

 

1 ブレークポイント デバッグの有効化、無効化
2 実行の継続
3 シングル ステップ実行
4 関数の開始
5 関数からのジャンプ
6 UI デバッグ
7 スレッドの選択

11 スレッド戻り値: 制御関数の戻り値。この関数を直接スキップします。

他のタイプのブレークポイントを追加します。

 

1 Swift エラー ブレークポイント

Swift グローバル ブレークポイントは、例外ブレークポイント ブレークポイントに似ています。

2 例外ブレークポイント

Objective-C のグローバル ブレークポイント。グローバル ブレークポイントを追加します。たとえば、配列が範囲外にある場合、次の情報が出力されます。

 

***** キャッチされなかった例外 'NSRangeException'** によりアプリを終了します。**理由: '*** -**[**__NSArray0 objectAtIndex:**]**: インデックス 1 が空の NSArray の境界を超えています'**

ただし、特定の配列の位置を正確に特定することはできません。グローバル ブレークポイントを追加すると、ブレークポイントは範囲外の配列で正確に停止できます 

3 OpenGL ES エラー ブレークポイント

OpenGL は、2D/3D グラフィックス プログラミング用の C 言語に基づく統合インターフェイスであり、デスクトップ Windows、Mac、Linux/Unix と互換性があります。OpenGL ES は、OpenGL 組み込みデバイス上のバージョン、つまり Android/iPhone、その他の組み込みデバイスおよびその他のモバイル デバイス用のプログラミング仕様です。(なお、Web上には対応するWebGLがあります)

iOS プラットフォームで現在サポートされている OpenGL バージョンが利用可能になりました
OpenGL1.0/OpenGL2.0/OpenGL3.0。 Cocoa フレームワークで OpenGL クラス ライブラリを使用して 2D/3D 画像を描画する場合、このオプションを使用してブレークポイントを追加できます。

4 シンボリックブレークポイント

文字に基づいてブレークポイントを追加します。たとえば、次のブレークポイントを追加します。

640?wx_fmt=その他

ブレークポイントは、プロジェクト内の btn_leftClick という名前のすべての関数に自動的に追加されます。

5 制約エラー ブレークポイント

自動レイアウトを使用して意図的に制約違反を設定してブレークポイントを追加した後、何も出力されませんでした。このタイプのブレークポイントはほとんど使用されません。

6 テスト失敗ブレークポイント

単体テストのグローバル ブレークポイント。追加すると、単体テストの XCAssert アサーションが失敗したときに、関数に留まります。この時点で、lldb コマンド p を使用して、変更条件がアサーションを満たすように強制し、デバッグを続行できます。

以上、iOSコードのデバッグに適用できる各種コマンドの紹介でした。その中でも、デバッグ処理におけるlldbコマンドについて詳しく紹介します。グローバル ブレークポイントは分類および導入されており、基本的に日常のプログラミングで使用されるシナリオをカバーしています。lldb のコマンド パラメータの詳細とConstraint Error Breakpoint 詳しい使用方法については、Apple の公式ドキュメントを参照してください。使用中に質問がある場合は、メッセージを残して連絡してください。

参考:
1 iOS Xcode ブレークポイント (ブレークポイント) デバッグ 
2 iOS ブレークポイント設定 (デバッガー) 
3 公式 lldb ドキュメント
4 iOS デバッグ
5 OpenGLES_ProgrammingGuide

おすすめ

転載: blog.csdn.net/KLong27/article/details/106081378