调试lambda表达式时出现“不支持的表达式”

4
我正在尝试在Android设备的调试模式下使用Visual Studio 2015调试lambda表达式。如果我放置一个断点,并尝试查看该表达式,则会出现错误消息。
this.customerList.Where(p => p.LastName == "Doe").ToList()

WatchImmediate Window 中,我得到以下信息:

不支持表达式。

我是在调试器停止在断点处后执行的。如果我不使用断点,就会得到以下信息:

不能在运行模式下评估表达式。

我做错了什么?

VS2015 中立即窗口中的 lambda 表达式 中所述的选项在调试模式下为灰色且未被选中。

编辑

我尝试了来自 Tatranskymedved 的示例代码,并得到了相同的结果:

Debugging lambda expression not possible

我猜想,在 Xamarin 中无法调试 Lambda 表达式。我在设备和模拟器上都尝试了,结果都一样。另一个可能性是我需要更改一些调试器设置。我尝试禁用 Use Fast Deployment (debug mode only)Use Shared Runtime,但是没有成功。


1
@JeroenvanLangen:我希望得到一个满足条件的对象,以便我可以深入挖掘一些变量进行检查。现在列表中有300多个条目,我不想点击所有这些条目来检查我的对象。另一种解决方案是直接在代码中编写查询,重新编译、调试和检查。上述功能会很方便。ToList()ToArray()难道不能处理这个吗? - testing
1
@testing 我刚刚亲自尝试了一下,同时观察list.Where()list.Where().ToList()都运行良好。请问您能否添加您的Customer类的定义?http://imgur.com/a/4iDkA - Tatranskymedved
也适用于即时窗口。当我开始调试时,监视器向您显示相同的消息,但是一旦我单击“环形箭头”,它会评估查询并给出结果。 - Tatranskymedved
1
@Tatranskymedved:感谢您的回复。在我的情况下没有“环箭头”。您在哪台机器上测试了您的代码?我直接在Android平板电脑上运行,我可以想象这可能会导致问题,或者我需要更改一些调试器设置。我可以提供完整的对象,但那将非常大。我想我会尝试一个非常简单的示例项目,然后使用此示例的代码更新我的问题。 - testing
1
我刚刚自己尝试了Xamarin,和你的情况一样。 - Tatranskymedved
显示剩余7条评论
1个回答

5

在运行了几个测试之后(没有找到相关的文章或帖子作为参考),我得出结论:使用Xamarin调试器无法对Lambda表达式进行调试。

相同的代码/表达式通常可以在标准应用程序上工作:

a

这似乎与.NET版本无关,因为在控制台应用程序上降级到4.0版本仍然提供相同的调试结果。
我注意到在Android项目属性中,有一个名为“调试器”的选项,可以选择值:Xamarin, Microsoft。控制台应用程序的标准调试很可能使用Microsoft ,它可能具有完全支持Lambda表达式调试的功能。

1
对于调试器,我在Android选项打包标签下只有.Net (Xamarin)C++可用。 - testing
@testing - 你找到解决方案了吗? - Eoin
@AbrahamJohn:不,我已经放弃了。但由于这个问题已经几年了,可能Xamarin已经更新了它的调试器。今天这个问题还存在吗? - testing
@testing 2022年12月07日,问题仍然存在。 - aca

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