如何解决为什么设置G_DEBUG =致命警告不会导致使用GLib的应用在Android上中止?
背景:我正在将使用GStreamer的WebRTC模块的纯Android示例应用程序(找到here)转换为Xamarin。正如预期的那样,我要转换的纯JAVA示例应用程序运行良好。但是,当将代码移植到Xamarin时,我遇到了许多GLib断言失败,这些失败使我困惑了一两天。经过几次尝试,我现在的最后选择是在调试器发生时进入调试器,以便我可以开始理解它们的性质。
我收到的消息是:
- g_error_new_literal:断言'message!= NULL'失败
- g_error_free:断言“错误!= NULL”失败
此外,此消息还散布在断言失败中(我认为这是最终的罪魁祸首):
不支持从字符集“ en-US”到“ UTF-8”的转换
问题:因此,经过大量阅读,我了解到GLib具有中止断言失败的能力(来自here,here和{{3 }}。问题是,使用
运行应用程序setenv("G_DEBUG","fatal-criticals",1);
或
setenv("G_DEBUG","fatal-warnings",1);
从JNI_Load的第一行执行....根本不会导致应用程序终止或中断。实际上,从Visual Studio调试器运行时,一切正常进行。我想念什么吗?是否需要在gbd下运行该应用程序才能终止该应用程序,还是可以仅通过Visual Studio运行该应用程序并期望它对我造成破坏?
谢谢。
解决方法
我怀疑GLib会在加载后立即读取该环境变量,因此您可能为时已晚,无法对其生效。尝试在已经启动的环境中在G_DEBUG=fatal-warnings
上运行程序。
(您无需使用调试器即可使该设置生效。)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。