自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

C++斷點無效解決方案

開發(fā) 后端
C++斷點無效的問題主要體現(xiàn)在斷點上無法打到,我們在這里為大家介紹的這種解決方案是一個比較常用簡單的方法,大家可以從中解決一些特定問題。

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

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

1. 某個修改后,斷點無法工作,之前版本依然正常

2. 只是某個文件中斷點無法工作

3. 斷點打在 引用另外DLL中的類對象A

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

 

  1. Core.dll   
  2. A.cpp   
  3. class A   
  4. {   
  5. public:   
  6. A( )  
  7. {   
  8. printf("constructor of a");  
  9. }   
  10. }   
  11. UI.dll   
  12. Manager.cpp   
  13. class Manager  
  14. {   
  15. public:   
  16. Manager( )  
  17. {   
  18. printf("constructor of Manager");  
  19. }   
  20. }   
  21. Button.cpp   
  22. A ins; // 斷點打在這里   
  23. Run.exe   
  24. void main()   
  25. {   
  26. Manager ins; // 實例化   

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

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

Button insB;

這樣做了以后,斷定必定能起作用。因此推斷CRT層的全局構(gòu)造是需要一個鏈表來推動的。因為Manager需要構(gòu)造,因此CRT肯定會掃描這個CPP對應(yīng)OBJ鏈接到exe里的段,讓這個段里的全局構(gòu)造函數(shù)都初始化,但是Button因為沒有使用,因此也不會構(gòu)造。這樣局部掃描應(yīng)該是出于效率。

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

責任編輯:曹凱 來源: 博客園
相關(guān)推薦

2010-02-06 14:54:11

C++指針漂移

2012-03-19 10:41:33

ibmdw

2022-05-26 10:13:22

C/C++GCC插件單元測試

2009-06-17 11:35:21

Ubuntu

2010-03-16 15:38:43

2009-08-26 18:17:26

C#基于Object解

2013-04-18 09:55:56

iOS開發(fā)Xcode調(diào)試斷點

2014-04-21 15:59:59

iOS 7.1企業(yè)應(yīng)用證書無效

2012-05-27 16:21:31

IDC華為

2018-12-03 12:17:27

Semptian解決方案

2018-12-03 11:59:42

Inventec解決方案

2018-12-03 12:13:21

Mellanox解決方案

2018-12-03 12:26:30

YADRO解決方案

2009-11-30 09:10:40

VS2003斷點無效

2016-03-13 17:58:57

2009-12-14 15:09:09

高端服務(wù)H3C

2012-03-05 12:17:24

H3C機場定制化

2011-02-20 18:46:09

華為解決方案

2011-12-09 11:13:17

2009-12-23 21:06:47

統(tǒng)一通信多媒體聯(lián)絡(luò)中心平臺華為
點贊
收藏

51CTO技術(shù)棧公眾號