正被停用的啟用上下文不是最近啟用的

來源:互聯網
上載者:User

最近碰到這個問題,,,,

總是程式執行一段時間才出現錯誤,很麻煩。。。

一度不想理會這個bug,但是幾天后,只要執行一段時間,這個bug就跑出來噁心人。。。

不得已我需要解決。。

VS2005給我的提示資訊為:

 Integer division by zero

正被停用的啟用上下文不是最近啟用的

第一句很簡單,除0 了。。

但是那麼多代碼為哪兒找去。。。

/// Begin -- 引用的文章=====================================

項目程式啟動並執行時候,突然出現這個錯誤,呼叫堆疊中的函數,沒有一個是自己寫的,非常困惑。
  在網上搜尋了一下,先找到一個提示,可以在CApp::InitInstance()中禁用ActivationContext:
  afxAmbientActCtx= FALSE;
  這種做法能“解決”問題,但進一步查證後發現這實際上是隱藏問題。
   Junfeng Zhang在自己的部落格中給了比較詳細的解釋(http://blogs.msdn.com/b/junfeng/archive/2006/03/19/sxs-activation-context-activate-and-deactivate.aspx)。基本上出現這個錯誤,是因為在代碼中拋 出了異常,從而跳過了與Context
Activation對應的Deactivation,導致後續調用Deactivation時,發現棧中的Context不對。
  而MSDN 論壇中, 網友MMDev在回答別人的文章(http://social.msdn.microsoft.com/Forums/en-US/vcgeneral/thread/c3feab0f-601b-4ca6-beb2-8d4d615438cc/)時給出了比較好的解決方案:
  在Visual Studio中,選擇Debug | Exceptions功能表項目,在彈出的對話方塊中,勾選所有的Win32 Exceptions,這樣在Win32的異常拋出時,程式就會中斷,這樣就有機會在第一時間(異常處理前)看到自己的代碼中發生了什麼錯誤導致拋出異常,從而改正錯誤,消除程式中的隱患。

/// End -- 引用的文章=====================================


關鍵一點,在Debug | Exception裡面勾選 Win32 Exceptions,第一時間處理異常。。


因此我一下子就定位到了該異常除,然後恍然大悟,看到代碼猶如醍醐灌頂,快感瞬間像電擊一樣流過全身。。


就這麼easy的解決了這個bug....

哈哈哈 ,,,,,,,,,,


聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.