日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
C++斷點(diǎn)無(wú)效解決方案

C++作為一款功能強(qiáng)大的計(jì)算機(jī)編程語(yǔ)言,可以幫助我們輕松的完成許多功能需求。不過(guò)在這樣的語(yǔ)言編程中,如果處理不當(dāng),同樣也會(huì)出現(xiàn)一些問(wèn)題。在這里我們就給出了C++斷點(diǎn)無(wú)效的解決方案。#t#

最近遇到一個(gè)vs2008 C++中斷點(diǎn)無(wú)法工作的問(wèn)題,具體表現(xiàn)為:

1. 某個(gè)修改后,斷點(diǎn)無(wú)法工作,之前版本依然正常

2. 只是某個(gè)文件中斷點(diǎn)無(wú)法工作

3. 斷點(diǎn)打在 引用另外DLL中的類對(duì)象A

文件結(jié)構(gòu):

 
 
 
  1. Core.dll 
  2. A.cpp 
  3. class A 
  4. public: 
  5. A( )
  6. printf("constructor of a");
  7. UI.dll 
  8. Manager.cpp 
  9. class Manager
  10. public: 
  11. Manager( )
  12. printf("constructor of Manager");
  13. Button.cpp 
  14. A ins; // 斷點(diǎn)打在這里 
  15. Run.exe 
  16. void main() 
  17. Manager ins; // 實(shí)例化 
  18. }

這里發(fā)現(xiàn)A根本不會(huì)被C runtime在執(zhí)行main之前構(gòu)造,因此造成了C++斷點(diǎn)無(wú)效。已經(jīng)排除特殊字符影響的原因,按照網(wǎng)上的方法是,將文件保存為UNICODE,問(wèn)題依舊。開(kāi)始用排除隔離法確定問(wèn)題位置,***發(fā)現(xiàn)這樣一個(gè)規(guī)律:

只要在Manager.cpp里構(gòu)造一個(gè)Button

Button insB;

這樣做了以后,斷定必定能起作用。因此推斷CRT層的全局構(gòu)造是需要一個(gè)鏈表來(lái)推動(dòng)的。因?yàn)镸anager需要構(gòu)造,因此CRT肯定會(huì)掃描這個(gè)CPP對(duì)應(yīng)OBJ鏈接到exe里的段,讓這個(gè)段里的全局構(gòu)造函數(shù)都初始化,但是Button因?yàn)闆](méi)有使用,因此也不會(huì)構(gòu)造。這樣局部掃描應(yīng)該是出于效率。

解決這個(gè)C++斷點(diǎn)無(wú)效問(wèn)題還有一個(gè)方法就是全部使用靜態(tài)鏈接方式,這樣構(gòu)造代碼都放到***的exe中,就不會(huì)出現(xiàn)這樣的問(wèn)題。


網(wǎng)站標(biāo)題:C++斷點(diǎn)無(wú)效解決方案
網(wǎng)站路徑:http://www.5511xx.com/article/dhopgds.html