1. 程式人生 > >VC斷點失敗的原因之中的一個

VC斷點失敗的原因之中的一個

方式 文件 排除 調試 又一 link 實現 fly str

VC斷點失敗的原因之中的一個

flyfish 2014-10-23


情景
再debug狀態下僅僅有一個cpp文件。命中不了斷點。
提示 能夠 同意源碼與原始版本號不同
不採用,防止出現未知的隱患


問題分析
1 頭文件(.h)和實現文件(.cpp),經過編譯生成OBJ文件。OBJ文件通過連接(Link)生成EXE文件
簡化: .h+.cpp -> obj -> exe

2 PDB文件存儲了EXE文件的全部調試信息。每當生成OBJ 文件時。編譯器都會將調試信息合並到PDB 中
簡化: .h+.cpp -> obj -> pdb

運行 又一次生成解決方式
obj和pdb文件都是又一次生成

能夠排除
1 編譯器參數設置問題
2 pdb文件的增量更新
3 obj -> pdb
4 obj -> exe

問題定位

.h+.cpp -> obj

也就是源代碼編譯為obj的時候出現了問題。

這個無法斷點的cpp與編譯使用的cpp不同步。相當於這個cpp更新了編譯器不知道。


問題解決
通知編譯器這個cpp文件更新了。
在這個.cpp文件相應的.h文件裏加一句沒實用的代碼。
再次編譯,斷點命中,問題解決。之後再刪除沒用的代碼。






VC斷點失敗的原因之中的一個