【问题标题】:Mono Develop debugger crashes when passing 2d array to function将二维数组传递给函数时,Mono Develop 调试器崩溃
【发布时间】:2013-01-03 00:13:26
【问题描述】:

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

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

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

我收到断言错误:

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

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

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

【问题讨论】:

  • “我的代码有什么问题,还是 mono/monodevelop 有什么问题” - 哪个更有可能?你到底想用那个浮点数组赋值做什么?
  • 这是再现行为的最小代码吗?

标签: c# multidimensional-array mono monodevelop


【解决方案1】:

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

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

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

【讨论】:

  • 像魅力一样工作!我不知道 monodevelop 默认使用 ms .net。
【解决方案2】:

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

【讨论】:

  • 好吧,如果它对你有用,那么我将不得不在我的另一台计算机上检查它,因为它仍然会使我的调试器崩溃。 Stacktrace 将我带到 MonoDebelop.Debugger.Win32.CorDebuggerSession.OnbBeakpoint( )
  • @demi:这显然是一个调试器错误。在这种情况下我要做的是file a bug so guys at Xamarin can fix it
  • 这是 Win32 CorDebugger 插件中的一个错误。作为一种解决方法,您可以在 Windows 上安装 Mono 并以 Mono 框架/调试器而不是 Microsoft 运行时/调试器为目标,一切都会为您工作。
  • @jstedfast:就像一个魅力!我不知道 monodevelop 默认使用 ms .net。
  • @jstedfast:您能否发表您的评论作为答案,以便 OP 接受它?
猜你喜欢
  • 2020-11-01
相关资源
最近更新 更多