我必须使用外部构建脚本为 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 这个源代码的位置,以便更容易调试。
这甚至可能吗?
编辑:我在这里找到了一个相关的问题No symbols/source for external library in Xcode 4
所以当我跑步时,xcrun dwarfdump libavformat.a | grep "\.c"
我会得到一堆这样的结果:
AT_decl_file( "libavformat/movenc.c" )
所以我尝试将相关的源文件放在相对于 .a 文件和我的 .xcodeproj 文件的文件夹中,但这些方法都不起作用。完整的源代码可在此处获得:https ://github.com/openwatch/livestreamer-ios
edit2:我发现了另一个关于如何为 lldb 设置源映射的问题,但我不太确定该怎么做...... LLDB 相当于 gdb“目录”命令用于指定源搜索路径?
看来我可能需要做
(lldb) settings set target.source-map libavformat/movenc.c /path/to/libavformat/movenc.c
对于我需要的每个文件?