私はXcode7を使ってアプリケーションをデバッグします。Xcode7のlldbの「ステップイン」の何が問題になっていますか?
step into
はstep over
のように振る舞いますが、サブプロシージャの実行にジャンプできませんか?そのたびにソースコードの次の行にジャンプします。
私はUIKitメソッドでデバッグしています(ソースコードがありません)、次の命令にジャンプします。 GDB Manualから
私はXcode7を使ってアプリケーションをデバッグします。Xcode7のlldbの「ステップイン」の何が問題になっていますか?
step into
はstep over
のように振る舞いますが、サブプロシージャの実行にジャンプできませんか?そのたびにソースコードの次の行にジャンプします。
私はUIKitメソッドでデバッグしています(ソースコードがありません)、次の命令にジャンプします。 GDB Manualから
見つけたとおり、step-in
はデバッグ情報のないフレームを避けています。ほとんどの人は、ステップのコマンドをステップ1からステップ12の間で切り替えるのではなく、次に進む行によって次のように切り替えるのが好きです。私の経験では、step
を選ぶ傾向があります。デバッガがデバッグ情報を持たない他のコード&のprintfで停止しない場合、これはより快適になります。
しかし、lldbの「ステップ」コマンドでは、これを制御するためのオプションがあります:
-a <boolean> (--step-in-avoids-no-debug <boolean>)
A boolean value that sets whether stepping into functions will step over functions with no debug information.
あなたが頻繁にこれを使用する場合は、このオプションを含めるようにstep
エイリアスをリセットする、またはそれを含む別のエイリアスを作成しますか、 。これを行うには、command alias
コマンドを使用します。
そして、あなたは常にステップインだけグローバル設定設定なしデバッグ情報をコードにステップしたい場合:デバッグセッションの開始時またはご.lldbinitに
settings set target.process.thread.step-in-avoid-nodebug 0
のいずれかを。
ほとんどのlldbのコマンドは、help
システムに記載されています。たとえば、help step
はstepコマンドに対して上記のオプションを示しており、apropos step
はその設定を示しています。
:
行番号情報が機能するために存在する場合にも、ステップコマンドは、関数に入ります。それ以外の場合は、次のコマンドのように動作します。これにより、MIPSマシンでcc -glを使用する場合の問題を回避できます。以前は、ルーチンに関するデバッグ情報があれば、サブルーチンを入力しました。
そして、Step into
がソースファイルを持っているコードでうまく機能しています。
多分私は間違いを犯しました。しかし、lldbは非常にドキュメントが欠けています。
お返事ありがとうございます。 – Karl