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 并保留了所有默认设置。以前,这已经解决了像这样的奇怪问题。

我已经阅读了几十个类似的投诉,但这些解决方案对我不起作用。

【问题讨论】:

断点是白色还是红色?您是否尝试过从所有项目中删除所有 binobj 文件夹并重新构建?您也可以尝试在 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 未发出命令

断点未命中,消息扩展也未在 iOS 中附加

Xamarin Forms Android:获取 XA3001:无法 AOT 程序集

最新 iOS 更新 (12.2) 后,本地存储中的视频未在 WebView (Xamarin.Forms) 中播放

Xamarin Forms Android 项目图像未显示但在 iOS 上正确显示

Xamarin.Forms iOS - 当设备连接互联网时开始上传数据,即使应用程序当前未处于活动状态或处于后台也是如此