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]。
将 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]。