拥有C++源码的.a静态库如何在Xamarin.Forms项目中调试
Xamarin.iOS 项目C++静态库源码调试方案
基础调试前置要求
持有C++源码的前提下完全支持调试,调试前需要先完成以下准备:
- 重新编译C++源码生成调试版静态库:编译参数开启调试符号生成,关闭所有编译优化,将生成的新.a文件替换Xamarin.iOS项目中引用的原有静态库
- 调整Xamarin.iOS项目构建设置:
- 选中Debug配置(对应你要调试的iPhone/iPhone模拟器平台)
- 勾选启用调试选项,将托管链接器设置为
仅链接SDK程序集或完全关闭链接,禁用LLVM编译优化 - 打包设置中勾选包含调试符号,确保生成的应用包携带完整符号信息
Xcode无法附加进程的解决步骤
按以下顺序排查即可解决:
- 版本匹配校验:确认你调试用的iOS设备/模拟器系统版本,和当前Xcode支持的最高系统版本一致,如果系统版本过高,要么升级Xcode,要么下载对应版本的DeviceSupport包放入Xcode的对应资源目录
- 部署配置校验:确认应用部署用的是开发证书和调试描述文件,设备已经开启开发者模式,应用成功安装到设备/模拟器上可以正常手动打开
- 调整附加操作顺序:不要使用Xcode的“等待应用启动”模式附加,先在Visual Studio for Mac中启动你的Xamarin.iOS项目,等应用完全加载到首页后,再打开Xcode,点击顶部菜单栏
Debug->Attach to Process,在进程列表中找到你的应用名称选中附加即可 - 断点无法命中的补充操作:如果附加成功后C断点灰显,可在Xcode中手动添加C源码目录,或者创建符号断点直接输入要调试的C++函数名,触发对应逻辑时Xcode会自动匹配源码
无需Xcode的替代调试方案
如果不想用Xcode附加,可以直接在Visual Studio for Mac中完成C++源码调试:
- 打开Xamarin.iOS项目的调试设置,勾选启用原生代码调试选项
- 直接在Visual Studio中打开你的C源码文件添加断点,启动调试后即可直接命中,同时支持托管C#代码和原生C代码的步进调试
内容的提问来源于stack exchange,提问作者jjjjj
相关产品推荐
相关产品推荐

