2

我在调试单声道应用程序时遇到问题,使用单声道开发。当我尝试在将二维数组作为参数的函数中调试代码时,调试器崩溃。例如,然后调试器进入测试函数:

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

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

我收到断言错误:

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

我的代码有什么问题吗,还是 mono/monodevelop 有什么问题?

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

4

2 回答 2

1

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

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

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

于 2013-01-03T20:34:40.540 回答
0

这段代码没有问题,它可以用 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表示错误是通过反射调用的方法发生的——也许这就是你错过实际问题的原因?堆栈跟踪应该提示您在哪里查找实际异常。它甚至可能在不同的线程中。

于 2013-01-03T01:24:14.583 回答