Visual Studio Mac 2022调试Xamarin.iOS不显示崩溃stacktrace如何解决
Visual Studio for Mac 2022调试Xamarin.iOS无法定位崩溃、获取堆栈解决方案
该问题是VS2022 for Mac升级后调试器默认配置变更、部分选项被重置导致的,和项目本身代码无关,按以下步骤操作即可恢复和VS2019 for Mac一致的崩溃定位能力:
- 完全退出所有运行中的Visual Studio 2022窗口,同时关闭正在运行的iOS模拟器、断开已连接的调试用iOS设备
- 打开访达,按下快捷键
Command+Shift+G,跳转路径~/Library/Preferences/VisualStudio/17.0/(若找不到对应目录,选择17开头的Visual Studio配置目录即可,对应VS2022全版本),定位到MonoDebuggerSettings.xml配置文件 - 用任意文本编辑器打开该文件,查找配置项
<Property name="BreakOnUnhandledExceptions" value="false" />,将value属性修改为true;如果没有找到对应配置项,直接在配置根节点下新增一行<Property name="BreakOnUnhandledExceptions" value="true" />即可 - 保存配置文件后重启Visual Studio for Mac 2022,重新启动调试流程,应用崩溃时调试器会自动停在异常抛出位置,同时输出完整可定位的崩溃堆栈
如果上述配置修改后仍无法正常捕获堆栈,按以下顺序排查:
- 检查项目生成配置:打开Xamarin.iOS项目属性面板,进入「生成」-「iOS生成」页,确认Debug配置下「调试信息」选项设置为
Full,同时取消勾选「优化代码」选项,避免符号信息被裁剪导致堆栈无法解析 - 检查调试器全局设置:打开Visual Studio偏好设置,进入「调试器」-「通用」设置页,确认勾选「在未处理的异常处中断」选项,VS2022部分版本更新后会默认重置该选项为关闭状态
- 真机调试场景下,先删除iOS设备上已安装的旧版调试应用,执行解决方案Clean操作清除本地编译缓存后重新部署调试,残留的旧符号缓存会导致堆栈解析失败
两个版本调试界面对比参考:
- Visual Studio 2019 Mac 调试界面:
- Visual Studio 2022 Mac 调试界面:
内容的提问来源于stack exchange,提问作者lapoPaolacci
相关产品推荐
相关产品推荐



