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

C# 将2d数组传递给函数时,Mono Develop调试器崩溃,c#,multidimensional-array,mono,monodevelop,C#,Multidimensional Array,Mono,Monodevelop,我在使用mono develop调试mono应用程序时遇到问题。当我试图调试以2d数组作为参数的函数中的代码时,调试器崩溃。 例如,测试函数中的调试器步骤: float[,] b = new float[4,4]; Test(b); static void Test(float[,] x) { float[,] y = x; } 我发现断言错误: 回调中的异常:System.Reflection.TargetInvocationException:调用的目标已引发异常。-->Syst

我在使用mono develop调试mono应用程序时遇到问题。当我试图调试以2d数组作为参数的函数中的代码时,调试器崩溃。 例如,测试函数中的调试器步骤:

float[,] b = new float[4,4];
Test(b);

static void Test(float[,] x)
{
    float[,] y = x;
}
我发现断言错误:

回调中的异常:System.Reflection.TargetInvocationException:调用的目标已引发异常。-->System.IndexOutOfRangeException:索引超出数组的边界


我的代码是否有问题,或者mono/monodevelop是否有问题


编辑:是的,此代码只是一个示例;我试图缩小问题的范围。

这段代码没有问题,它可以用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
表示发生了错误-这可能就是您忽略实际问题的原因?堆栈跟踪应该提示您在何处查找实际异常。
它甚至可能位于不同的线程中。

这是MonoDevelop中Win32 CorDebugger插件中的一个错误

作为一种解决方法,您可以在Windows上安装Mono,并以Mono框架/调试器(而不是Microsoft运行时/调试器)为目标,这样您就可以工作了


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

“我的代码有什么地方做错了,还是Mono/monodevelop有什么地方做错了?”——哪一个更有可能?你到底想用浮点数组赋值做什么?这是重现行为的最小代码吗?好吧,如果它对你有效,我必须在我的另一台计算机上检查它,因为它仍然会使我的调试器崩溃。Stacktrace引导我找到MonoDebelop.Debugger.Win32.CorDebuggerSession.OnbBeakpoint()@demi:这显然是一个调试器错误。在这种情况下我要做的是。这是Win32 CorDebugger addin中的一个bug。作为一种解决方法,您可以在Windows上安装Mono,并以Mono框架/调试器(而不是Microsoft运行时/调试器)为目标,一切都会对您有用。@jstedfast:非常有用!我不知道monodevelop使用ms.net作为默认值。@jstedfast:你能不能把你的评论作为答案发布出来,这样OP就可以接受它了?效果很好!我不知道monodevelop默认使用ms.net。