C# 将2d数组传递给函数时,Mono Develop调试器崩溃
我在使用mono develop调试mono应用程序时遇到问题。当我试图调试以2d数组作为参数的函数中的代码时,调试器崩溃。 例如,测试函数中的调试器步骤: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
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。