3

ソースがある外部ライブラリを使用しているiPhoneアプリに取り組んでいます。デバッグ中に一部のオブジェクトがデバッガーで 0x0 としてリストされますが、アプリは正常に実行されます。また、一部のオブジェクト アドレスは間違ったものを指しています。これらのシンボルは外部ライブラリにあります。実際に外部ライブラリにあるファイルをトレースしている場合、アドレスは問題ありません。

この動作を停止する方法を提案している人はいますか?

4

3 に答える 3

1

更新:ターゲット設定>ビルドタブ> GCC 4.2コード生成>「サム用にコンパイル」

このターゲット設定をオフにすると、gdb の問題はなくなりました。

--

こんにちはジョン。

私はあなたが言及していることを理解しています。また、コードの特定の部分で、gdb と NSLog() がポインターに対して異なる結果を返すという問題も見られます。

要約した例では、この関数の任意の行にブレークポイントを設定すると、gdb は「ポインター」の適切な値を報告しません。

id testPointer( id pointer )
{
    NSLog( @"pointer value: %p", pointer );

    @try
    {
        NSLog( @"foo" );
    }
    @catch ( NSException *e )
    { }
    @finally
    { }

    return pointer;
}
于 2009-10-05T19:57:24.083 に答える
0

この問題を解決できたことがありますか?私も、ThumbモードとARMモードを混在させたときのgdbの奇妙な動作に気づいています。たとえば、gdbによって報告された変数のアドレスは、printf( "%p \ n")ステートメントを使用して報告されたアドレスから正確に64バイトずれているようです。おそらく、gdbは、現在の動作モードがARMであるかThumbであるかを明示的に通知する必要があります...?

于 2010-06-08T17:08:16.767 に答える
0

zPesk が指摘しているように、0x0 は nil であり、初期化されていないオブジェクト (特にインスタンス変数) の一般的な値です。「間違ったことを指摘する」とはどういう意味かよくわかりません。ローカル (スタック) 変数を初期化していない場合は、初期化されるまで任意のランダム アドレスを指す可能性があります。どのような行動に問題がありますか?

于 2009-08-17T03:20:33.077 に答える