Chr*_*ger 6 xcode ffmpeg ios lldb xcode5
我必须使用外部构建脚本编译FFmpeg for iOS ,但是当我调试时,如果我深入研究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
Run Code Online (Sandbox Code Playgroud)
有一些清晰的调试符号可以让我相信应该有一些方法告诉Xcode这个源代码的位置,以便于调试.
这甚至可能吗?
编辑:我在这里找到了一个相关的问题Xcode 4中没有外部库的符号/来源
因此,当我跑步时,xcrun dwarfdump libavformat.a | grep "\.c"
我得到一堆这样的结果:
AT_decl_file( "libavformat/movenc.c" )
Run Code Online (Sandbox Code Playgroud)
所以我尝试将相关的源文件放在相对于.a文件和我的.xcodeproj文件的文件夹中,但这两种方法都不起作用.完整源代码可在此处获得:https://github.com/openwatch/livestreamer-ios
edit2:我发现了另一个关于如何为lldb设置源映射的问题但是我不太清楚要做什么... LLDB相当于用于指定源搜索路径的gdb"directory"命令?
好像我可能需要做
(lldb) settings set target.source-map libavformat/movenc.c /path/to/libavformat/movenc.c
Run Code Online (Sandbox Code Playgroud)
我需要的每个文件?
所以看来问题是我将 libavcodec.a、libavformat.a 等编译成我的 FFmpegWrapper 项目 (libFFmpegWrapper.a) 中的单个静态库,然后我将其作为静态库包含在名为 LiveStreamer 的包含项目中。将 .a 文件移动并将源文件(未添加到构建目标)添加到 LiveStreamer 项目修复了该问题。
如果将来有人遇到这个问题,请随时给我留言,因为我已经为此苦苦挣扎了好几天。
归档时间: |
|
查看次数: |
2733 次 |
最近记录: |