Xamarin.Android 断点命中时 VS2013 中的 NullReferenceException

NullReferenceException in VS2013 when breakpoints hit in Xamarin.Android

将 Visual Studio 的 Xamarin.Android 更新到最新的稳定版本后,我收到一个奇怪的错误。在调试模式下启动应用程序时,Visual Studio 有时会在不期望的地方抛出 NullReferenceException。这发生在行

ThreadPool.QueueUserWorkItem(x => ContinueOnCreate());

在我的 Activity 的 OnCreate 方法中。但是,奇怪的是,在 previous 行上放置断点时,我立即得到

Unhandled Exception: 
System.NullReferenceException: Object reference not set to an instance of an object

in Visual Studio 一旦遇到断点。在这种情况下,有问题的行是对实例方法的简单方法调用:

AnimateWidgets();

...如果我还在该方法内的第一个花括号上放置断点,则由于调用 AnimateWidgets 时抛出 NullReferenceException,断点将不会命中。

如果我在 activity 的 OnCreate 方法的第一个花括号上放置一个断点,它会按预期命中,但是当逐步执行该方法时,一旦方法调用 CookieManager.Instance.RemoveAllCookie 制作于

CookieSyncManager.CreateInstance(this);
CookieManager.Instance.RemoveAllCookie();
CookieSyncManager.Instance.Sync();

我猜这是 Xamarin 中的一个错误,但我想知道是否有人有过类似的经历。我使用的是 Xamarin 版本 3.9.547.0 和 Xamarin.Android 版本 4.20.2.1.

[编辑:这个问题是在调用CookieManager.Instance.RemoveAllCookie方法时引起的。

删除 android phone 中的运行时。

我在低 API 版本 phone 中解决了同样的情况。 当我在旧 API 级别 phone.

中使用多线程或异步方法时发生此问题

该问题是由 Android WebView 的更新版本中的一个问题引起的,可能是由于将信号错误地转发到 SIGSEGV 信号处理程序引起的。它只出现在调试版本中,而不是发布版本中。

临时解决方法是通过 "Settings" -> "Apps" -> "Android System WebView" -> "Uninstall updates" 降级设备上的 WebView。使用版本 39 有效,但它也可能适用于更高版本。

有关详细信息,请参阅

http://www.asus.com/zentalk/forum.php?mod=viewthread&tid=5919

https://bugzilla.xamarin.com/show_bug.cgi?id=29365

https://code.google.com/p/chromium/issues/detail?id=476831

非常感谢 Xamarin 的 Jon Goldberger 及时跟踪此问题。

[编辑Jonathan Pryor has a workaround that doesn't require downgrading the WebView。我一直无法通过此修复解决问题,但您的情况可能会有所不同。还要感谢 Jon Goldberger link]。