【问题标题】:Breakpoints not getting hit in Xamarin StudioXamarin Studio 中未命中断点
【发布时间】:2015-04-08 06:03:31
【问题描述】:

我的断点在 Xamarin Studio 中没有受到影响。我不确定这是否与我的代码有关,但我觉得好像不是因为我已经一遍又一遍地尝试在我的项目中放置断点(在我知道它们绝对应该放置的地方命中,并且在代码完美运行并且与我当前正在测试的功能完全无关的地方)并且在我调试时它们都没有得到确认。我没有禁用断点,也没有将它们添加到错误的位置。断点应该正常工作,但事实并非如此。我还要补充一点,在调试过程中我不允许暂停我的应用程序。我想你可以说我的 Xamarin Studio 中的调试器不工作,我不知道为什么。我相信我已经确定它与代码无关,但我仍然不能确定。请帮忙。谢谢你。

【问题讨论】:

  • 您是否处于发布模式?如果不尝试重新启动 Xamarin Studio,如果这没有帮助,也许重新安装 Xamarin 相关的所有内容......
  • 尝试清理并重建您的解决方案
  • 通过不选择将所有程序集捆绑到本机代码解决了另一个类似问题
  • 我建议将@rvnlord 答案标记为答案。

标签: c# debugging xamarin xamarin.forms xamarin-studio


【解决方案1】:

这是最流行的问题:谷歌中的“断点没有在 xamarin 中被命中”,所以经过一整天的反复试验,我将在此处发布针对 xamarin 版本 > 4.0.0.xxx 的此问题的解决方案.是的,遗憾的是这很简单。

解决方案 (此解决方案适用于 Visual Studio 中的 android 应用,但也适用于 xamarin Studio)

从“调试”文件夹的路径中删除所有符号(通常为:[.sln 文件的路径] \ [您的解决方案名称] \bin\Debug):

所以如果你得到例如:

G:\My Files\Programming\C# (+ JS)\Test1\Examples\LINQ to Objects\AndroidDemo\AndroidDemo\bin\Debug

改成:

G:\My Files\Programming\CSharp\Test1\Examples\LINQ to Objects\AndroidDemo\AndroidDemo\bin\Debug

对我来说,“(”和“)”符号造成了麻烦(谁在路径中使用这些符号对吗?)

要验证这是否有效,请打开调试文件夹,在 VIsual Studio 中选择“Clean Solution”、“Recompile Solution”、“Deploy”。

“部署”操作应生成包含调试数据的 *.mdb 文件。如果它们存在,您现在应该能够在断点处停止。

现在,当您需要调试某些东西时,您可以像往常一样简单地按 F5。

【讨论】:

  • 这也对我有用,但我仍然不明白为什么会导致这样的问题。有什么想法吗??
  • 你一定是在开玩笑吧。一个小时前它工作得很好,现在突然出现问题了?这也为我解决了。太奇怪了,怎么突然就断了。
  • @JedatKinports 我认为只是解决方案的路径。如果您的解决方案位于 C:\You\(Something-like-this)\app.sln 中,请将其更改为 C:\You\Somethinglikethis\app.sln
  • @ispiro 谢谢。我想通了,我的路径中也有点和感叹号。
【解决方案2】:

我不确定是否有人仍在关注此线程,但此解决方法对我有用。 问题有时与单声道 5 有关。

所以解决方法是使用旧版本的单声道:

将“项目>活动运行时”设置为“Mono 4.8.0 (8f6d0f6) (/Library/Frameworks/Mono.framework/Versions/4.8.0)”。

对于 Mac 用户,在“Preferences”->“.NET Runtimes”中更改它

然后重建 Android 应用项目。

【讨论】:

  • 我也在 Xamarin 论坛上把它弄红了,试过了,确实对我有用(Xamarin Studio for Mac)。我必须下载并安装 Mono 4.8.1 版本,因为我只安装了 Mono 5.0.1.1(全新的 mac)。
  • 此解决方案适用于 Visual Studio Community for Mac。
  • 我已将 .Net runtimes 更改为 Mono 4.8.1 而不是 5.0.1.1 但这并不能解决问题。 Droid 项目中仍然没有触发断点
  • 也为我工作。谢谢
【解决方案3】:

删除 BIN 文件夹和任何 *.SUO 文件是解决此问题的常用方法。

也可以尝试删除任何 *.csproj.user

在最坏的情况下,通过使用“Devenv.exe /ResetSettings”启动(运行)来重置 VS 设置

【讨论】:

  • 行得通!删除 .vs 目录中的 SUO 文件有帮助!此外,由于某种原因,该文件不再出现并且调试器可以工作。
【解决方案4】:
  1. 确保将构建配置设置为调试。
  2. 确保您的项目的构建设置已设置为允许为您的调试配置发出 DEBUG 符号。
  3. 清理并重建您的解决方案/项目。
  4. 关闭并重新启动 Xamarin Studio。
  5. 重新启动计算机。

有时,您的解决方案的构建配置可能会变得复杂,并且在构建复杂的构建配置时很容易遗漏一些东西。确保那里的一切都正确设置。

【讨论】:

  • 我试过这个,但它对我不起作用。似乎 XamarinStudio 本身存在一些问题。因为我在安装 XamarinStudio 更新后开始出现这个问题。
  • 此外,断点仅针对程序的主类。如果我在其他一些类中放置断点,特别是从接口扩展的类,断点不会命中。很奇怪。
  • 除了你的主程序之外,那些不会在项目/库/程序集中受到影响的类吗?换句话说,您的解决方案中是否有多个项目?如果是这样,那些其他项目是否设置为在您的构建配置中进行调试?这是我能想到会导致这种行为的唯一原因。如果您可以在某些项目而不是其他项目中命中断点,则几乎总是构建配置问题。这可能是 Xam Studio 更新的问题,但请务必检查构建配置。否则,请提交错误报告。
  • 嗯,是的,我的解决方案中有多个项目。但是我已经设置了这些项目进行调试,仍然没有达到断点。并且确信这是 XamarinStudio 中的一个问题。因为同一个项目在 XamarinStudio 的几次更新(可能是最新的 1 或 2 次更新)之前为我工作。
  • 您能否提供您的构建配置矩阵的屏幕截图?
【解决方案5】:

我昨天遇到了这个问题,使用 VS 2013 和 Xamarin 插件。 PCL 项目中的“突然”断点不活动,即使 Android 项目中的断点仍然存在。几周来一切都运行良好,我没有应用任何更新。看 VS 调试 |窗户 |在模块视图中,我可以看到没有为 PCL 程序集加载符号,并且我尝试的任何操作都不会强制它们加载,即使它们存在于正在运行的程序集的文件夹中。

然后我记得我前一天做的最后一件事与代码无关,而是对 csproj 文件进行了一些重构以支持参数化的 Jenkins 构建。我在第一个“共享”PropertyGroup 中放置了一个 OutputPath 定义,并将其从所有配置/平台特定的 PropertyGroup 中删除,例如:

<OutputPath>bin\$(Configuration)\</OutputPath>

我删除了这个“通用”OutputPath 并将其放回每个特定的 PropertyGroup(请注意,冒犯了我的 DRY 敏感性),然后事情又开始工作了。

这可能不会让很多人感到痛苦,但它浪费了我几个小时,所以希望它可以饶恕其他人。 Xamarin 构建可能对它的一些 MSBuild/xbuild 进行了强烈的期望,所以如果你为构建过程修改了你的 csproj 文件,这可能是罪魁祸首。

【讨论】:

    【解决方案6】:

    我添加这个答案是因为这是唯一对我有用的答案,在Project Properties &gt; Build 我错误地检查了Optimize Code。 取消选中此框可解决问题。

    【讨论】:

      【解决方案7】:

      我从 stable 切换到 alpha Channel v.3.11.785 (Alpha)。现在所有断点都已命中。

      【讨论】:

        【解决方案8】:

        我在使用 Visual Studio for Mac 的 Xamarin Forms 应用程序中遇到了这个问题。就我而言,这是由于调试器而发生的。在 iOS 模拟器中运行时,Visual Studio 不断显示“正在等待调试器连接到 iOS 模拟器……”。我确实重置了模拟器(Hardware => Erase All Content 设置)并清理解决方案。然后我可以用断点进行调试。希望这对某人有所帮助。

        【讨论】:

          【解决方案9】:

          我遇到了同样的问题。

          原因(IMO):

          在我的情况下,问题是由 Xamarin Studio(但与 VS2013 相同)构建/重建过程引起的。

          更详细地说,*.mdb 文件未正确重新生成,因此调试器无法正常工作。 您可以通过清理解决方案并转到 bin/debug 文件夹进行检查:如果您仍然看到 *.mdf 文件,那么这也是您的问题!

          解决方案

          唯一有效的解决方案是从解决方案中的所有项目(因此 Android 项目和所有 PCL 项目)中手动删除 bin/debug 中的所有 *.mdb 文件,然后进行重建。

          如果有帮助,请告诉我!

          【讨论】:

          • FWIW:我确实删除了所有 mdb 文件,并清理并重建了项目。我仍然有同样的问题。
          【解决方案10】:

          对我来说,“(”和“)”符号也是造成问题的原因,我花了数周时间寻找这个问题。删除完整路径中的“(”和“)”,进行干净的构建并再次命中断点。

          【讨论】:

            【解决方案11】:

            就我而言,xamarin 没有遇到任何断点。显示红色环而不是实心红色圆圈,因为 xamarin 无法指出一些语法错误,因为我认为解决方案构建不是最新的,即使我能够运行该应用程序令人惊讶。所以我cleanedbuild 解决方案,然后它指出了错误和相关警告。我修复了这些,并运行了该项目。之后我就可以调试成功了!

            【讨论】:

              【解决方案12】:

              如果项目在设备上启动后 VS 恢复到标准编辑模式(菜单中未启用调试选项),即未附加调试器;检查项目属性 > Android 选项 > 启用开发人员工具 是否已选中。对我来说,该设置被禁用(很可能在发布后签入源代码管理)。

              【讨论】:

                【解决方案13】:

                使用“Visual Studio for Mac”(目前为预览版,但可以使用)而不是“Xamarin Studio”。这解决了我的问题。断点甚至在我的 PCL 项目中也有效!另一件事...从“Xamarin Studio”更改为“Visual Studio for Mac”时,我必须将“project.json”(JSON 格式)更改为“packages.config”(XML 格式)。

                【讨论】:

                  猜你喜欢
                  • 1970-01-01
                  • 2014-03-02
                  • 1970-01-01
                  • 1970-01-01
                  • 2014-03-27
                  • 2018-01-21
                  • 1970-01-01
                  • 1970-01-01
                  相关资源
                  最近更新 更多