为什么Xamarin调试器会跳过断点/代码?

3
由于某些原因,我的Xamarin调试器跳过了断点。
在这里,我已经在第50行设置了一个断点。无论我是继续到下一个断点还是步进到下一行,调试器都会跳过到第54行。

enter image description here

enter image description here

x也没出现在观察列表中,就好像它从来没有存在过一样。

我以前使用Xamarin从来没有遇到过这种问题,但最近我升级了VS 2017,难道这是罪魁祸首吗?我已经尝试重新安装VS和Xamarin,尝试再次使用VS 2015,清理解决方案,修改各种调试参数,但什么都没用。同时,我也使用完整的调试符号进行编译。


在第53行之后,x的值可以在编译时推断出;因此,51-53行可能被优化掉了。 - squill25
我不相信这是真的,因为我可以用与其他行相关的其他代码替换这些行,但它仍然会被跳过。此外,我进行调试编译而没有进行优化。 - RN_
@Rishub Nagpal,如果您禁用所有断点,然后只在第51行添加一个断点,然后直接调试它,结果如何?如果您仍然遇到相同的问题(断点未命中),可能的原因之一是您的项目未更新,或者代码实际上并未被应用程序调用。 - Jack Zhai
是的,断点没有被命中。我怀疑由于某种原因代码没有被生成。 - RN_
@Rishub Nagpal,感谢您分享您的解决方案,您可以将其标记为答案:) - Jack Zhai
显示剩余2条评论
3个回答

0

我通过右键单击我的 Xamarin 项目属性 -> Android 选项并启用“使用快速部署(仅调试模式)”来解决了这个问题。

您对为什么这个选项起作用有什么想法吗?


也许在调试模式下或其他情况下,它遇到了某些部署问题,您可以访问详细的输出窗口,并使用/不使用该选项查找更多有用的信息。无论如何,很高兴知道您已经解决了这个问题,所以您可以稍后将其标记为答案。祝您拥有愉快的一天 :) - Jack Zhai

0
您可能需要执行以下操作:"工具 -> 选项 - > 调试 -> 常规",然后取消勾选"启用我的代码 (仅托管代码)"。

很遗憾,没有任何区别。 - RN_
如果您有 web.config 或 app.config,请检查 debug = true。另外,您确定您正在调试模式而不是发布模式下运行吗? - CodySig
刚刚仔细检查了一下,我正在以调试模式运行。我可以调试所有内容,但如果我添加代码,则不会被编译。 - RN_
尝试关闭您的解决方案。在文本编辑器(如记事本或您使用的其他编辑器)中打开.csproj文件,并在“Debug | AnyCPU”配置的PropertyGroup下,将DebugType更改为portable。删除所有bin / obj / debug文件夹,然后重新打开、清理和重建。 - CodySig
它应该看起来像这样 <DebugType>Portable</DebugType>。 - CodySig

-1
有时我也会遇到这种情况。Xamarin 的问题在于它可能因为没有明显的原因而变得非常棘手。我的建议是尝试关闭你的 IDE 并重新打开它。如果这样不起作用,那么请尝试点击 Build -> Clean Solution 按钮,然后再点击 Build Solution,看看是否有所帮助。

这正是我发现的正确答案... 重新启动调试后一切恢复正常... 真糟糕! - Egli Becerra

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接