android的Mono-设备上的调试问题
在尝试在真实设备上调试应用程序时,我遇到了一个问题:触发断点后,等待大约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),结果相同。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
看起来设备终止了程序,因为它在限定时间内没有响应。但它当然不会回应!我正在检查我的代码 顺便说一句,在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);