現象:在vs2005中,建立一個(gè)空項目,添加一個(gè)c++文件main.cc
#include<iostream>
using namespace std;
int main()
{
cout << "hello";
}
此時(shí)按f5啟動(dòng)調試,即會(huì )提示項目無(wú)法調試:
無(wú)法找到“xxx.exe”的調試信息,或者調試信息不匹配。未使用調試信息生成二進(jìn)制文件。
搜了一些資料,都說(shuō)建立項目的時(shí)候不應建立空項目,而應當建立一個(gè)console application。這樣確實(shí)可以解決問(wèn)題,但,為什么在空項目下無(wú)法調試呢,怎樣來(lái)解決這個(gè)問(wèn)題?并沒(méi)有人寫(xiě)到。
其實(shí)問(wèn)題在于,在空項目中不生成調試文件pdb,所以無(wú)法調試。
要讓項目生成pdb文件,需要更改:
項目屬性,configuration properties->linker->Generate Debug Info 從 no 改為 yes
但這樣還是不夠的,還需要更改:
項目屬性,configuration properties->c/c++->debug information format為/ZI
項目屬性,configuration properties->c/c++->optimization為Disabled
因為為了生成這個(gè)文件,需要設定debug信息的格式并關(guān)掉O2,還要更改linker生成調試信息的開(kāi)關(guān)
如果有興趣diff項目的.vcproj文件,會(huì )發(fā)現更改了里面的三行配置信息:
<Tool
Name="VCCLCompilerTool"
Optimization="0" //原來(lái)是2
DebugInformationFormat="4" //原來(lái)是0
/>
<Tool
Name="VCLinkerTool"
GenerateDebugInformation="true" //原來(lái)是false
/>
聯(lián)系客服