android的Mono-设备上的调试问题

android的Mono-设备上的调试问题,android,debugging,mono,xamarin.android,Android,Debugging,Mono,Xamarin.android,在尝试在真实设备上调试应用程序时,我遇到了一个问题:触发断点后,等待大约6秒钟(无论我是单步执行代码还是什么都不做),程序将终止。输出窗口显示: 02-22 10:31:42.599 I/mono (32532): Stacktrace: 02-22 10:31:42.599 I/mono (32532): The program 'Mono' has exited with code 255 (0xff). 02-22 10:31:42.599 I/mono(32532):堆栈跟踪: 02-2

在尝试在真实设备上调试应用程序时,我遇到了一个问题:触发断点后,等待大约6秒钟(无论我是单步执行代码还是什么都不做),程序将终止。输出窗口显示:

02-22 10:31:42.599 I/mono (32532): Stacktrace: 02-22 10:31:42.599 I/mono (32532): The program 'Mono' has exited with code 255 (0xff). 02-22 10:31:42.599 I/mono(32532):堆栈跟踪: 02-22 10:31:42.599 I/mono(32532): 程序“Mono”已退出,代码为255(0xff)。 我尝试在两台不同的设备上调试(华硕Padfone和华为C8812,都是安卓4.0.4),结果相同。
看起来设备终止了程序,因为它在限定时间内没有响应。但它当然不会回应!我正在检查我的代码

顺便说一句,在emulator上调试是可以的(但是慢下来!!并且经常崩溃)


我的monodroid版本是4.4.55,我正在Windows 7(64位)下使用带SP1的Visual Studio 2010。我想我发现了问题,下面是一些代码,简单的代码,真的:

class OwnerDrawView : View
{
    PointF m_screenPosition;

    public OwnerDrawView(Context context)
      : base(context)
    {
      this.Touch += new EventHandler<TouchEventArgs>(OwnerDrawView_Touch);
      this.SetWillNotDraw(false);
    }

    protected override void OnDraw(Canvas canvas)
    {
      Core.Instance.OnDraw(canvas);
      base.OnDraw(canvas);
    }

    void OwnerDrawView_Touch(object sender, View.TouchEventArgs e)
    {
      m_screenPosition = new PointF(e.Event.GetX(), e.Event.GetY());
      switch (e.Event.Action) {
        case MotionEventActions.Down:
            Core.Instance.OnTouchDown(m_screenPosition);
            break;
        case MotionEventActions.Move:
            Core.Instance.OnTouchMove(m_screenPosition);
            break;
        case MotionEventActions.Up:
            Core.Instance.OnTouchUp(m_screenPosition);
            break;
      }
    }
}
在设备上运行程序,触摸屏幕,等待几秒钟,轰
但是,如果断点被放置在“Core.Instance.OnTouchUp(m_screenPosition)”行上,那么令人惊讶!一切都很好!!见鬼

我的整个程序运行在一个线程上,所以它不是一个多线程相关的东西。我确实有一个计时器,但该计时器只调用“OwnerDrawView”类上的PostInvalidate(是的!我正在使用Canvas构建一个游戏!)


这可能是单人机器人中的一个bug,但是如果有人在复制这个bug方面有困难,那么请忽略我(我总是一个不走运的家伙…)< /P>请把这个答案添加到你原来的问题上,因为现在人们认为你认为这个问题需要解决。

Core.Instance.OnTouchDown(m_screenPosition);