Mono Develop调试器在将2d数组传递给函数时崩溃

本文关键字:函数 崩溃 数组 调试器 Develop 2d Mono | 更新日期: 2023-09-27 17:50:24

我在调试mono应用程序时遇到了问题,使用mono开发。当我试图调试代码内的函数,得到2d数组作为参数,调试器崩溃。例如,然后调试器步骤测试函数:

float[,] b = new float[4,4];
Test(b);
static void Test(float[,] x)
{
    float[,] y = x;
}

我得到断言错误:

回调异常:System.Reflection.TargetInvocationException:异常已被调用的目标抛出。——>系统。日志含义IndexOutOfRangeException: Index超出了数组的边界。

是有什么我做错了我的代码,还是有什么问题与mono/monodevelop?

编辑:是的,这个代码只是一个例子;

Mono Develop调试器在将2d数组传递给函数时崩溃

这是MonoDevelop中Win32 CorDebugger插件中的一个bug。

作为一种解决方案,你可以在Windows上安装Mono,并以Mono框架/调试器为目标,而不是Microsoft运行时/调试器,这样事情就会为你工作。

(Mono调试器插件维护得更好)

这段代码没有问题,它可以在Mono调试器下编译和运行。
(我在OS x上使用MonoDevelop 3.1.1)

这是我编译的c#程序:

using System;
class MainClass
{
    public static void Main (string[] args)
    {
        float[,] b = new float[4,4];
        Test(b);
        Console.WriteLine ("Hello World!");
    }
    static void Test(float[,] x)
    {
        float[,] y = x;
    }
}

另外,TargetInvocationException表明错误发生在通过反射调用的方法中——也许这就是您错过实际问题的原因?堆栈跟踪应该为您提供在哪里查找实际异常的提示。它甚至可能在不同的线程中。