如何将预编译的静态库的debugging符号与Xcode 5的源代码进行匹配?
我必须使用外部构build脚本为iOS编译FFmpeg,但在debugging时,如果深入研究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
有清楚的debugging符号留下,这将导致我相信应该有一些方法来告诉Xcode这个源代码的位置,以便于debugging。
这甚至有可能吗?
编辑 :我在这里find一个相关的问题在Xcode 4中没有外部库的符号/来源
所以当我运行xcrun dwarfdump libavformat.a | grep "\.c"
xcrun dwarfdump libavformat.a | grep "\.c"
我得到了一堆这样的结果:
AT_decl_file( "libavformat/movenc.c" )
所以我试图把相关的源文件放在与.a文件和我的.xcodeproj文件相关的文件夹中,但是这两个方法都没有工作。 完整的源代码可以在这里find: https : //github.com/openwatch/livestreamer-ios
编辑2 :我发现了另一个关于如何设置源映射lldb的问题,但我不知道该怎么办… LLDB相当于gdb“目录”命令来指定源searchpath?
我似乎可能需要这样做
(lldb) settings set target.source-map libavformat/movenc.c /path/to/libavformat/movenc.c
为我需要的每个文件?
所以看来,问题是我正在编译libavcodec.a,libavformat.a等到我的FFmpegWrapper项目(libFFmpegWrapper.a),然后我包括作为一个静态库在一个名为LiveStreamer 。 移动.a文件并将源文件(未添加到构build目标)添加到LiveStreamer项目可解决问题。
如果将来有人遇到这种情况,请随时放弃我,因为我一直在为此苦苦挣扎。