一、调试 AppRTCMobile
打开 out/mac_Debug(其他的平台相应修改) 目录,使用 Xcode 打开 all.xcworkspace 文件,找到 AppRTCMobile 目标,运行调试,这个时候是不能在源码上设置断点的,因为无法找到符号和源文件的对应关心,需要设置 source map。
首先暂停程序运行,然后在 lldb 终端下运行如下命令找到某一个符号的地址以及源文件信息,如下:
(lldb) image lookup -vn NetEqImpl::GetAudio
输出
......
CompileUnit: id = {0x00000000}, file = "../../modules/audio_coding/neteq/neteq_impl.cc", language = "c++14"
......
注意如上一行,这说明了这个符号对应的源文件的位置,因为你运行程序的路径通过上诉的相对路径并不能找到源文件,需要设置 lldb 的 source map。如果没有 “CompileUnit…” 那很有可能是可执行文件中没有包含调试信息,请使用 dwarfdump, objdump, nm 等相关工具查看。
(lldb) settings set target.source-map "../../" "/Users/albert/Workspace/alibaba/alirtc/webrtc_grtn/"
注意需要设置你本地环境的源文件路径,这个 source-map 就是为了匹配你设置断点的文件行数可以对应上二进制文件中的汇编相应的文件行数。
这篇博客介绍了如何在Xcode环境下调试AppRTCMobile项目,特别是如何处理源码与二进制文件的映射问题。首先,在mac_Debug目录下用Xcode打开并运行项目,由于初始状态无法在源码中设置断点。接着,通过lldb命令`imagelookup`查找特定符号的源文件位置。如果找不到,可能是因为缺少调试信息。然后,使用`settings set target.source-map`命令设置源码映射,将相对路径替换为本地源文件的实际路径,确保断点能正确命中源代码行。此过程对于在WebRTC等复杂项目中进行高效调试至关重要。
2661

被折叠的 条评论
为什么被折叠?



