2

malloc_error_breakXcodeの下で自動(または永続的な)ブレークポイントを設定することは可能ですか?(Xcodeにあり、見逃した場合は、指摘してください)。GDBからLLDB、新旧のプロジェクトまで、Xcodeの下でどこでも機能するようにしたいと思います。本当にデバイスで動作させたいのですが、それは伸びる可能性があります(デバイスのmallocガードで何かが壊れているようです)。

私は.lldbinit役に立つかもしれないと思っていましたが、LLDBはその考えをやめさせます。.lldbinitLLDBは(によるとbreakpoint list)(http://lldb.llvm.org/tutorial.html )で設定されたブレークポイントを尊重しないようです。LLDBは、のブレークポイントも無視します.lldbinit-Xcode(Robに感謝)。

.gdbinit役に立つかもしれませんが、.gdbinitで保留中のブレークポイントを設定できないで説明されているバグに遭遇する可能性があります。これはAppleであり、QAプロセスが完全に壊れているため、修正されるとは思いません。

要約すると、以下はこのMac(MacBook Pro、10.8)およびXcode(4.5.2)では機能しません。

riemann: jwalton$ cat ~/.lldbinit
# http://lldb.llvm.org/tutorial.html
# Not honored by LLDB
breakpoint set --name malloc_error_break
# Shot in the dark since the previous is not honored
breakpoint set pending --name malloc_error_break
riemann: jwalton$ cat ~/.gdbinit 
set breakpoint pending on
set breakpoint malloc_error_break
set breakpoint pending auto

編集(2013/02/07):.gdbinitと同等のlldbと将来のブレークも参照してください?

ジェフ

4

2 に答える 2

3

アップデート

Xcode で永続的なすべてのプロジェクトのブレークポイントを設定する簡単な方法があります。

任意のプロジェクトを開きます。ブレークポイント ナビゲーターに移動します。上にシンボリック ブレークポイントを作成しますmalloc_error_break。次に、ナビゲーターでブレークポイントを右クリックし、ポップアップ メニューから [ブレークポイントの移動先] > [ユーザー] を選択します。Xcode は、ユーザー ブレークポイントをすべてのプロジェクトに適用します。

ビデオについては、このブログ投稿のステップ 2 を参照してください。

オリジナル

LLDB には独自の init ファイルがあり、… (太鼓を鳴らしてください)… と呼ばれます.lldbinit。そこにブレークポイントを設定することもできます。WWDC 2012の「セッション 415 - LLDB を使用したデバッグ」ビデオでは、このファイルについて 29 分 43 秒から詳しく説明しています。.lldbinit-XcodeXcode で実行されている場合にのみ LLDB がロードするファイルを作成することもできます。

GDB の保留中のブレークポイントの問題に関して、私からアドバイスはありません。

于 2012-11-15T07:45:40.153 に答える
1

gdb ブレークポイントに関しては、Mac OS X gdb は一般的な FSF gdb とは少し異なります。b malloc_error_breakそこに永続的なブレークポイントを設定するか、最悪の場合fb malloc_error_break(それを明示的にする Apple-gdb 固有のfuture-breakコマンド) を使用するだけで問題ありません。

Xcode 4.5 の lldb では、.lldbinitファイルに設定されたブレークポイントが追加されないというバグがありました。設計上の欠点ほどのバグではありません。実際には、ブレークポイントがターゲットに追加され、.lldbinitファイルが読み取られているときに、lldb にはまだターゲットが設定されていません。Greg Clayton は、数か月前に svn リポジトリ lldb ソースで、その時点から新しく作成されたターゲットにインストールされるこのような設定を適用するためのプレースホルダーを作成して修正したと思います。svn lldb ソースを使用すると、正常br s -n malloc_error_breakに動作する.lldbinitはずです。

于 2012-11-15T20:25:36.640 に答える