0

この問題を追跡し、同じ問題を抱えている他の人からの複数の提案を読むのにかなりの時間を費やしました。私は大規模なコード ベースを扱っているため、何のヒントもなく問題を見つけることは、干し草の山から針を探すようなものです。

私が読んだ提案の 1 つは、*malloc_error_break* にブレーク ポイントを追加することですが、どうすればそれを行うことができますか。シンボリック ブレーク ポイントを追加する必要があることは理解していますが、Symbol と Module の 2 つのテキスト フィールドに正確に何を入力すればよいかわかりません。

Malloc Scribble と Malloc Guard Edges を有効にしようとしましたが、ブレーク ポイントやクラッシュは発生しません。

Zombie Objects を有効にすると、プログラムのクラッシュは停止しますが、出力ログには問題を示すものは何もありません。

最後に、Guard Malloc を有効にしようとしました。シミュレーターでのみ機能することを理解しているので、試してみましたが、問題は、プログラムの行が実行される前に、起動フェーズでプログラムがクラッシュすることです。

0x958e0cd4  <+0000>  mov    0x4(%esp),%eax
0x958e0cd8  <+0004>  mov    %gs:0x0(,%eax,4),%eax   < Crash
0x958e0ce0  <+0012>  ret 

コール スタックは次のようになります。

pthread_getspecific
__dyld__dyld_start

ここで何が間違っているのかわかりませんか?

4

1 に答える 1

0

malloc_error_break にブレークポイントを追加するには、デバッガーを停止しb malloc_error_break、"gdb" または "lldb" プロンプトで入力します。

于 2012-09-04T00:03:14.613 に答える