這太瘋狂了。它開始發生在我的主要項目中,所以我創建了一個小樣本全新項目來重現它。當然,它不會發生在我創建的示例項目中,它只是一個Win32控制檯應用程序。VS2008 C++ MFC訪問衝突只有當通過調試模式步進
我在Win7x64上運行這個,如果有的話。 VS2008 SP1。
在這裏。我用一個按鈕創建一個小對話框應用程序。在該按鈕的處理函數中放置一個斷點。按鈕處理函數如下所示:
void CTestProjectDlg::OnBnClickedButton1()
{
int i;
i = 2; // < breakpoint here
i = 3;
}
單擊該按鈕,命中斷點。 F10步驟,並繁榮:「TestProject.exe中的0x0398f77b第一次機會異常:0xC0000005:訪問衝突。」
它給了我選擇打破或繼續。如果我繼續,它只是再次點擊它,而不是「第一次機會」。是的,我在Debug-> Exceptions dlg中檢查了這個異常。
如果我休息,調用堆棧只顯示斷點所在的行。如果我F10 再次 ..我再次得到異常,只有現在的callstack在_AfxDispatchCmdMsg()函數中顯示我,並且我原來的OnBnClickedButton1()不在調用堆棧中了。
無論我放置斷點的位置如何。
如果不是F10,我只是繼續使用F5,它可以正常工作。
現在..如果我構建一個發佈版本並運行在調試模式下:我打斷點,所有的指針,變量值看起來很正常。 F10,這些轉向垃圾。這個指針現在爲零。 m_csHello現在是
但是,在發佈模式下,沒有捕獲到異常,並且它一切正常。 「hello World string在對話框中顯示,因爲它應該。
我已經提出了一個查詢,看看我的盒子裏是否有IT補丁在最後一兩天安裝了一些補丁。 ?發生4天前
你認爲什麼是VS2008損壞
感謝
編輯:。其他信息如果我建立/調試x64平臺僅適用於Win32這不會發生。
我還查看了VS2008的所有修補程序/安全更新。是
最後,我把這個項目在不同的機器尚未更新,在過去2-3週上。它可以在那裏找到,並且安裝了相同的VS更新。
爲了本文的目的,我也改變了正在被越過的代碼。 ..這是一個簡單的整數賦值,不涉及MFC。
此刻我正在重新安裝VS2008。
你鏈接的控制(比如IDC_BUTTON1)爲ON_BN_CLICKED(IDC2_BUTTON1,OnBnClcikedCutton1)?這可能是一個問題。 – Sunscreen 2010-05-06 08:25:00
是的。如果我理解你的問題,那就是它如何到達斷點。 – HotOil 2010-05-06 11:56:57
在你的代碼,你必須控制你的鏈接對話框的rlated功能的遊戲內某處: BEGIN_MESSAGE_MAP(CTestProjectDlg,CDialog的) ... ON_BN_CLICKED(IDC2_BUTTON1,OnBnClcikedCutton1) 你可以搜索你的cpp代碼爲「ON_BN_CLICKED」?它在嗎? – Sunscreen 2010-05-06 14:44:32