为什么设置 G_DEBUG = fatal-warnings 不会导致使用 GLib 的应用程序在 Android 上中止?

Why would setting G_DEBUG = fatal-warnings not cause an app using GLib to abort on Android?

背景:我正在将使用 GStreamer 的 WebRTC 模块的纯 Android 示例应用程序(找到 here)转换为 Xamarin。正如预期的那样,我正在转换的纯 JAVA 示例应用程序运行良好。但是,在将代码移植到 Xamarin 时,我遇到了许多 GLib 断言失败,这让我困惑了一两天。经过几次尝试,我最后的办法是在它们出现时中断调试器,以便我可以开始了解它们的性质。

我收到的消息是:

此外,在断言失败中穿插的是这条消息(我认为这是最终的罪魁祸首):

不支持从字符集“en-US”到“UTF-8”的转换

问题:所以,经过大量阅读,我了解到 GLib 能够在断言失败时中止(来自 here, here, and here)。问题是,运行将应用程序与

setenv("G_DEBUG", "fatal-criticals", 1);

setenv("G_DEBUG", "fatal-warnings", 1);

...从 JNI_Load 中的第一行开始执行不会导致应用程序终止或中断。事实上,当 运行 来自 Visual Studio 调试器时,一切都正常进行。我错过了什么吗?是否需要 运行 gbd 下的应用程序才能终止,或者我可以通过 Visual Studio 运行 它并期望它为我中断?

提前致谢。

我怀疑 GLib 会在加载该环境变量后立即读取该环境变量,因此您编写它可能为时已晚,以至于它没有任何效果。在已经启动的环境中尝试 运行 您的程序 G_DEBUG=fatal-warnings

(您无需使用调试器即可使该设置生效。)