非xcode编译的code加断点

这篇博客介绍了如何在Xcode环境下调试AppRTCMobile项目,特别是如何处理源码与二进制文件的映射问题。首先,在mac_Debug目录下用Xcode打开并运行项目,由于初始状态无法在源码中设置断点。接着,通过lldb命令`imagelookup`查找特定符号的源文件位置。如果找不到,可能是因为缺少调试信息。然后,使用`settings set target.source-map`命令设置源码映射,将相对路径替换为本地源文件的实际路径,确保断点能正确命中源代码行。此过程对于在WebRTC等复杂项目中进行高效调试至关重要。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、调试 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 就是为了匹配你设置断点的文件行数可以对应上二进制文件中的汇编相应的文件行数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值