離奇的bug
File: afx.ini
Line: 122
修改動作
單元開發
完成的專
案
修改動作
刪除!
修改動作
ColorEyeI SelXls
兩個專案
重疊的檔
案
但
ColorEyeI
不見得有
建在專案
中
修改動作
修改動作
修改動作
問題描述
按下
去
問題描述
出現了這
鬼東西
去找找
File: afx.ini
Line: 122
問題描述
// CString
_AFX_INLINE CStringData* CString::GetData() const
{
ASSERT(m_pchData != NULL);
return ((CStringData*)m_pchData)-1;
}
CString???
問題解析
void CColorEyeIApp::OnFileOmdtoxls()
{
// TODO: Add your command handler code here
CSelExcelDlg dlgSelExcel;
dlgSelExcel.DoModal();
}
程式SelDialog在這裡宣告、運作、結束
先追縱這問題在程式的哪個階段發生問題
依問題描述可知,是從按下Cancel或Ok開始。
追縱一下,「按下Cancel或Ok開始」的程式碼在哪
回到這段程
式執行的地
方,單步執
行
問題解析
按下
去
問題解析
void CColorEyeIApp::OnFileOmdtoxls()
{
// TODO: Add your command handler code here
CSelExcelDlg dlgSelExcel;
dlgSelExcel.DoModal();
}
剛剛的
下一步
問題解析
問題解析
問題解析
問題解析
問題解析
沒
override
CString?
剛剛的點
1. 按下Cancel
2. ~CSelExcelDlg
3. ~CString
4. 當掉
問題解析
class CSelExcelDlg : public CDialog
{
FormType m_ft;
int m_openOmdLimit;
std::vector<CString> m_omdFilesList; // m_vOmdFilePathList;
//…
兇手?
這個CString member variable相關的member function都註解掉
1. 按下Cancel
2. ~CSelExcelDlg
3. ~CString
4. 當掉
檢查
問題解析
1. 按下Cancel
2. ~CSelExcelDlg
3. ~CString
4. 當掉
按下
去
問題解析
1. 按下Cancel
2. ~CSelExcelDlg
3. ~CString
4. 當掉
結果一樣 那…問題
在??
真因
刪除專案
移動(另外新增加)
檢查#include路徑
真因
刪除專案
移動(另外新增加)
檢查#include路徑
真因
為了避免用到
舊的檔案
compiler整個
專案
問題就解決了
上述原因可重現問題

Bug afx ini-line122