Xamarin.Forms IOS 断点未命中
Posted
技术标签:
【中文标题】Xamarin.Forms IOS 断点未命中【英文标题】:Xamarin.Forms IOS Breakpoints Not Hit 【发布时间】:2017-10-16 08:45:09 【问题描述】:我最近升级到了新的 Xamarin for Visual Studio,从那以后,我在 ios 调试期间不能再遇到断点。奇怪的是,android 运行良好。
我卸载并重新安装了 Visual Studio Community Edition 2017 并保留了所有默认设置。以前,这已经解决了像这样的奇怪问题。
我已经阅读了几十个类似的投诉,但这些解决方案对我不起作用。
【问题讨论】:
断点是白色还是红色?您是否尝试过从所有项目中删除所有bin
和 obj
文件夹并重新构建?您也可以尝试在 Mac 上找到缓存文件夹并将其清除。
我已经完成了你的所有建议,但仍然没有任何效果
我也遇到了同样的问题。我正在 Windows 10 上的 VS 2017 Enterprise 上进行开发,在 Mac 上构建并在通过 USB 连接到 Mac 的 iPad 上进行调试。我设法通过转到 iOS 项目的属性并在 Build Settings 中将 Linker Behavior 设置为 Dont Link 并取消选择 Strip Native 调试符号来使其达到断点。
感谢您的建议,但这不起作用
“if(System.Diagnostics.Debugger.IsAttached)”会为您返回什么?也试试 System.Diagnostics.Debugger.Break();是不是断线了?
【参考方案1】:
我在 Windows 上的 Visual Studio 2017 和在远程 Mac 上使用 iOS 模拟器的最新 Xamarin 遇到了同样的问题。调试已开始,但未命中断点。
通过在 Mac 或 iOS 构建选项上更改 nothing 使其工作;而是将 Windows 中 Visual Studio 2017 中生成的调试信息类型从“Full”或“Pdb-only”更改为“Portable”。
我为 iOS 平台项目以及共享 Xamarin.Forms 项目 (.NET Standard 2.0) 执行此操作。
此后,Shared 项目和 iOS 平台项目中的断点开始受到影响。好时光。
【讨论】:
我正在处理我每天都在处理的同一个项目,今天早上我的 iOS 断点突然停止工作。尝试了一切,直到我看到并尝试了它并解决了我的问题。感谢您的帮助!【参考方案2】:另一种解决方案是禁用 iOS 项目(不是 PCL 项目)中的链接。这对我有用。
转到 iOS 项目设置 iOS 构建 链接器行为:不要链接。
【讨论】:
【参考方案3】:Xamarin.iOS
中存在一个错误,将在Xamarin.iOS 10.12.0.12 (494fcbc)
中修复,该错误应该在 beta 通道中可用。该问题似乎只发生在 PCL 中,如果您在可移植项目(Xamarin.Forms 代码)中设置断点,就会出现这种情况。
有一个临时的workaround,对我有用:
可能的临时解决方法:切换可移植类库 项目输出“便携式” PDB 文件而不是“完整” PDB 文件
在文本编辑器中打开可移植类库 .csproj 文件。例如,右键单击解决方案资源管理器中的项目并选择 卸载项目,然后再次右键单击它并选择“编辑...”。
在“Debug|AnyCPU”配置的 PropertyGroup 下,将 DebugType 更改为:portable
保存更改并重新加载项目。
再次构建、部署并开始调试 iOS 应用项目。
如果您执行上述步骤,Android 会出现问题。为了能够再次在 Android 上打断点,您必须这样做 this:
长话短说,如果您手动删除“bin”和“obj”文件夹 对于您切换到
portable
的每个项目, 从测试设备上卸载应用程序,然后清理并重建 解决方案,这应该有望允许portable
模式使用 安卓也是。一旦你执行了一次这些清理步骤,你 理论上应该不需要再次执行它们,除非您切换 再次调试类型。
编辑
在 Android 上我仍然有 troubles,所以这不是完美的方式。
【讨论】:
【参考方案4】:转到您的 Visual Studio for Mac、解决方案资源管理器并选择项目, Project->Option->Compiler->Debug information,在下拉菜单中选择“Full”。
您需要为要调试的解决方案中的每个项目设置此“完整”,否则断点将不会启动。
【讨论】:
【参考方案5】:Xamarin 表单:确保您的视图与绑定上下文绑定,否则将不会命中断点。并且断点显示为未加载的符号。
例子:
public ExamplePage()
InitializeComponent();
BindingContext = App.Resolve<ExampleViewModel>();
这为我解决了问题:)
【讨论】:
【参考方案6】:经过大量挖掘终于找到了解决方案,请查看随附的屏幕截图。
在 VS 2019 社区版中。
【讨论】:
以上是关于Xamarin.Forms IOS 断点未命中的主要内容,如果未能解决你的问题,请参考以下文章
Xamarin Forms TapGestureRecognizer 未发出命令
Xamarin Forms Android:获取 XA3001:无法 AOT 程序集
最新 iOS 更新 (12.2) 后,本地存储中的视频未在 WebView (Xamarin.Forms) 中播放
Xamarin Forms Android 项目图像未显示但在 iOS 上正确显示
Xamarin.Forms iOS - 当设备连接互联网时开始上传数据,即使应用程序当前未处于活动状态或处于后台也是如此