除錯VC的一點小經驗

2021-05-12 19:29:43 字數 1629 閱讀 8084

一、編寫聊天室程式時遇到的問題:

debug assertion failed arccore.cpp  line 478 錯誤的解決:

先通過以下方法定位:

首先如果你用的是vc6的話:

1。按f5執行你的程式

2。在出錯時,選擇「重試」

(3。按alt+7調出「呼叫棧」視窗

4。雙擊從上往下的最近乙個自己定義的函式,)

一般系統會自動把該函式所在的檔案顯示出來,此時程式就暫停在游標處。一般來說錯誤就出在這附近。

你可以通過檢視變數的值來確認。

我所遇到的錯誤為:

析構csessionsocket物件時,先把csocketfile指標刪除了,然後才銷毀carchive物件,語句如下:

csessionsocket::~csessionsocket()

此時就會彈出debug assertion failed arccore.cpp錯誤,原因是執行archive中的flush()函式時檔案指

針已經為空了。所以就彈出了如上錯誤。解決辦法,將如上指標銷毀的順序改變一下,先銷毀carchive對

象指標,再銷毀檔案指標。即:

csessionsocket::~csessionsocket()

二、有關updatedata()函式的用法總結:

updatedata(true);  

把控制項的值傳給對應的變數。   

updatedata(false);   

把變數的值傳遞給控制項。

下文**他人部落格:

updatedata()用法 收藏

一、總結updatedata()函式

updatedata(true);//用於將螢幕上控制項中的資料交換到變數中。

updatedata(false);//用於將資料在螢幕中對應控制項中顯示出來。

當你使用了classwizard建立了控制項和變數之間的聯絡後:當你修改了變數的值,而希望對話方塊控

件更新顯示,就應該在修改變數後呼叫updatedata(false);如果你希望知道使用者在對話方塊中到底輸入了

什麼,就應該在訪問變數前呼叫updatedata(true)。 

二、關於編輯框的賦值和取值

1、建乙個 控制型的變數,如m_edit1,用cwnd的setwindowtext() 和getwindowtext()來賦值和取值。

m_edit1.setwindowtext("hello");  

或者getdlgitem(idc_edit1)->setwindowtext(str);

2、建立乙個控制型的變數,如m_edit1,用setdlgitemtext()和getdlgitemtext()來賦值和取值

cstring str="hello":

m_edit1.setdlgitemtext(idc_edit1,str);

2、直接建乙個   數值形的變數   如m_stredit;   用  updatedata()來控制得到變數,還是更新變數

//取值  

updatedata(true);  

cstring   buf   =   m_edit1;  

//賦值  

m_edit1="ok!";  

updatedata(false);

debug的一點點小經驗

1 對於大型介面程式卡死的問題,首先根據卡死時的操作按鈕,找到對應的函式,在函式裡就開始打斷點 2 程式指標在 跑飛,就說明問題出在該位置。重點關注迴圈 函式呼叫語句 3 在適當的距離上,設定多個斷點,截斷一整個流程,將bug確定在某個範圍裡 4 找到某個範圍,在這個範圍裡利用 單步執行,進行排查 ...

關於android螢幕適配的一點小經驗

android開發裡最擾人的活有一塊是螢幕適配吧,各種機型的試錯,才確定乙個布局,但是今天我不講布局的經驗,我講講美工或者設計給的一套切圖,應該放在哪個目錄下最合適。設計或者美工給了一套切圖,我們應該把它放在哪兒合適呢?畢竟有那麼多資料夾,按存放大小排列依次是ldpi,mdpi,hdpi,xhdpi...

mysql一點經驗

今天看了下mysql5的英文手冊,雖然只看了一點點,還是要分享一下其中比較實用的東西。為了方便大家學習,舉出下面給出一些例子。大家看著用就行了。特別是被很多程式設計師忽略的mysql變數,那可真是個好東西呀。1 時間操作 表名 table 字段 birth 格式1989 05 13 根據年紀計算歲數...