6

外部ビルド スクリプトを使用して iOS 用の FFmpeg をコンパイルする必要がありますが、デバッグ中に libavformat ライブラリ関数を深く掘り下げすぎると、アセンブラが表示されます。

0x109a73:  cmpl   $0, 1192(%ebp)
0x109a7a:  jns    0x109a86                  ; mov_write_header + 198 at movenc.c:3539
0x109a7c:  movl   $1, 1192(%ebp)
0x109a86:  movl   16(%ebp), %eax
0x109a89:  cmpl   $0, 84(%eax)
0x109a8d:  movl   %edx, %ecx
0x109a8f:  jne    0x109ad9                  ; mov_write_header + 281 at movenc.c:3548
0x109a91:  testb  $2, 48(%ecx)
0x109a95:  jne    0x109ac1                  ; mov_write_header + 257 at movenc.c:3541

明確なデバッグ シンボルが残っているため、デバッグを容易にするために、このソース コードの場所を Xcode に伝える何らかの方法が必要であると思われます。

これは可能ですか?

編集: 関連する質問が見つかりました ここに Xcode 4 の外部ライブラリのシンボル/ソースはありません

したがって、実行するxcrun dwarfdump libavformat.a | grep "\.c"と、次のような結果が得られます。

AT_decl_file( "libavformat/movenc.c" )

そのため、関連するソース ファイルを .a ファイルと .xcodeproj ファイルの両方に関連するフォルダーに配置しようとしましたが、どちらの方法も機能しませんでした。完全なソース コードはこちらから入手できます: https://github.com/openwatch/livestreamer-ios

edit2 : lldb のソース マッピングを設定する方法に関する別の質問を見つけましたが、どうすればよいかわかりません...ソース検索パスを指定するための gdb "directory" コマンドに相当する LLDB?

する必要がありそうです

(lldb) settings set target.source-map libavformat/movenc.c /path/to/libavformat/movenc.c 

必要なすべてのファイルに対して?

4

1 に答える 1

4

したがって、問題は、libavcodec.a、libavformat.a などを FFmpegWrapper プロジェクト (libFFmpegWrapper.a) の単一の静的ライブラリにコンパイルしていたことであり、これを LiveStreamer という名前の含まれるプロジェクトに静的ライブラリとして含めていたようです。 . .a ファイルを移動し、ソース ファイル (ビルド ターゲットに追加されていない) を LiveStreamer プロジェクトに追加すると、問題が修正されました。

将来誰かがこれに遭遇した場合は、遠慮なく私に連絡してください。私はこれに何日も苦労していたからです。

于 2013-09-21T00:04:46.123 に答える