c# - 为什么我在单声道中收到段错误而不是 StackOverflow 错误?

标签 c# android mono

我已经为 Android (ARM) 编译了 mono,它运行良好。

代码:err.cs:

using System;
namespace E
{
    class E {
        public static void Main(string[] args)
        {
            Console.WriteLine("ERR");
            e();
        }

        private static void e(){e();}
    }

}

在 PC 上我得到这个输出:

ERR
Stack overflow: IP: 0x407cb1b7, fault addr: 0x7ffc4dabbff8
Stacktrace:
  at E.E.e () <0x0000b>
  <...>
  at E.E.Main (string[]) <0x0001f>
  at (wrapper runtime-invoke) <Module>.runtime_invoke_void_object (object,intptr,intptr,intptr) <0xffffffff>

但在 Android 上我遇到了段错误(输出):

ERR
Segmentation Fault

我可以用它来捕获异常并写入 logcat 而不是关闭我的应用程序吗?

最佳答案

.Net 和 Mono 以不同方式处理 native /非托管代码中出现的段错误。

在 Mono 下,如果 segfault 被 native 代码触发,那么您将获得堆栈跟踪并且程序被中止,如果 seqfault 被托管代码触发,它将作为托管异常处理。

仅供引用:最近在 mono-dev 列表上讨论了 *nix 段错误处理:http://mono.1490590.n4.nabble.com/SIGNAL-Segfault-in-native-function-called-by-managed-code-tt4666581.html

关于c# - 为什么我在单声道中收到段错误而不是 StackOverflow 错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32444441/

相关文章:

Android seekbar如何在短时间内阻止拖动/禁用它

c# - 在这种情况下,避免ObjectDisposedException的正确方法是?

C# 与 Express : "This method is reserved for future use" - what does it mean?

java - 在 DialogFragment 从网站下载图片后,ImageView 上方出现青色条

java - 从 firebase 获取列表时,特定值仅显示在一个 recyclerview 项目中,但不会显示在列表中显示的其他项目中

c++ - 在单声道项目和 C++ 控制台应用程序之间传输数据?

c# - RestSharp 在上传时将整个文件加载到内存中。如何避免?

windows - 如何在 Windows 中为 Visual Studio 项目创建 Debian 安装包?

c# - 可以将 FTP 与 Amazon S3/Google Drive/OneDrive 一起使用吗?

c# - 单个控制台应用程序中的多个控制台