gpt4 book ai didi

ios - 如何使用 Xcode 5 将预编译静态库的调试符号与源代码匹配?

转载 作者:可可西里 更新时间:2023-11-01 03:56:06 26 4
gpt4 key购买 nike

我必须使用 external build script 为 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 equivalent of gdb "directory" command for specifying source search path?

看来我可能需要做

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

我需要的每个文件?

最佳答案

看来问题是我将 libavcodec.a、libavformat.a 等编译到我的 FFmpegWrapper 项目 (libFFmpegWrapper.a) 中的单个静态库中,然后我将其作为静态库包含在包含名为 LiveStreamer 的项目。移动 .a 文件并将源文件(未添加到构建目标)添加到 LiveStreamer 项目解决了这个问题。

如果以后有人遇到这个问题,请随时给我留言,因为我为此苦苦挣扎了好几天。

关于ios - 如何使用 Xcode 5 将预编译静态库的调试符号与源代码匹配?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18903782/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com