2013-02-22 77 views
1

當試圖在真實設備上調試我的應用程序時,我遇到了一個問題:觸發斷點後,等待大約6秒鐘(無論是單步執行代碼還是隻做沒有)程序將終止。輸出窗口顯示:Mono for Android - 設備上的調試問題

 
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). 

我試圖兩個不同的設備(華碩Padfone和HUAWEI C8812,兩者的Android 4.0.4),相同的結果上的調試。
看起來設備終止了程序,因爲它在限制時間內沒有響應。但當然它不會迴應!我正在瀏覽我的代碼!

模擬器上調試BTW是罰款(但SLOOOOW !!和崩潰常常)

我MonoDroid的的版本是55年4月4日,而我的Windows 7(64位)下使用Visual Studio 2010 SP1的

回答

0

我想我找到了問題,這裏是一些代碼,簡單的代碼,真正做到:

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; 
     } 
    } 
} 

不介意「核心」類,這並不重要(儘管它聽起來是如此^ _^)
要重現此錯誤,只需p在這一行花邊斷點:

Core.Instance.OnTouchDown(m_screenPosition); 

在設備上運行程序,觸摸屏幕,等待幾秒鐘,BOOM!
但是,如果斷點放置在「Core.Instance.OnTouchUp(m_screenPosition)」行上,那麼驚喜!一切安好!!我勒個去!!

我的整個程序運行在一個線程上,所以它不是一個多線程相關的東西。我確實有一個計時器,但該計時器只在「OwnerDrawView」類中調用PostInvalidate(是的,我正在使用Canvas構建遊戲!)

這可能是monodroid中的一個錯誤,但如果有人出現問題再現這個錯誤,那麼請忽略我(我總是一個倒黴的傢伙....)

+0

請將這個答案添加到你原來的問題,因爲現在人們認爲你認爲這個問題有待解決 – TimothyP 2013-02-22 12:33:33