以前用visual studio 2008時(shí)也碰到過(guò)類(lèi)似問(wèn)題,問(wèn)題產(chǎn)生的原因就是由于一個(gè)Solution下單多個(gè)Project是分開(kāi)編譯的,主項(xiàng)目和子項(xiàng)目的pdb文件名相同(默認(rèn)都是
vc90.pdb或vc100.pdb)從而造成沖突。這個(gè)問(wèn)題對(duì)程序的執(zhí)行不會(huì)產(chǎn)生影響,但會(huì)導(dǎo)致丟失部分調(diào)試信息。
在網(wǎng)上搜到
解決辦法,修改pdb文件設(shè)置的路徑和名稱(chēng)。轉(zhuǎn)貼于此。
Project Configuration Properties -> C/C++ -> Output Files
Program Database File
This name, e.g. $(IntDir)\vc90.pdb, is embedded into the object file and it should be the same as the one in
Project Configuration Properties -> Linker -> Debugging
Generate Program Database File
This is, e.g. $(TargetDir)$(TargetName).pdb
Now the object file contain the path where the library is located, too.
由此引出一個(gè)話題,那就是對(duì)于分開(kāi)編譯的多個(gè)Project組成的一個(gè)復(fù)雜的Solution如何組織目錄文檔結(jié)構(gòu),既保持各個(gè)Project相對(duì)獨(dú)立,同時(shí)又保證整個(gè)Solution調(diào)試信息的完整性。我的解決辦法是:首先肯定要像上面一樣修改各單獨(dú)Project的pdb的路徑和文件名。其次在復(fù)制Project編譯結(jié)果到Solution的Lib時(shí),要把所有的obj文件和pdb文件一起copy過(guò)來(lái)。要注意單獨(dú)的Project編譯的obj文件和pdb文件路徑最好相同,而且使用相對(duì)路徑"..\"和“.\"打頭。文件復(fù)制工作可以寫(xiě)成一個(gè)批處理,放入主Solution的Pre-Build Event中去。