我在Visual C ++ 2010(Win32应用程序,非托管代码)中有一个项目,其中我遇到了一个非常奇怪的行为。我放了一个断点,它根本没有破坏!
线索:
在exe文件路径中生成PDB文件。
Debug / Modules窗口显示消息“Binary未使用调试信息构建。”
手动加载PDB文件(调试/模块,右键单击可执行模块,从符号路径加载符号,然后双击PDB文件)说“在此文件夹中找不到匹配的符号文件。 ”
我的设置:
编译器命令行:
/I"..\..\calibur64k\include" /I"C:\Program Files (x86)\Microsoft DirectX SDK (June 2010)\Include" /Zi /nologo /W3 /WX- /Od /Oy- /D "D3D_DEBUG_INFO" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_UNICODE" /D "UNICODE" /Gm /EHsc /RTC1 /MTd /GS /fp:precise /Zc:wchar_t /Zc:forScope /Fp"Debug\calibur_app.pch" /Fa"Debug\" /Fo"Debug\" /Fd"Debug\vc100.pdb" /Gd /analyze- /Zl /errorReport:queue
链接器命令行:
/OUT:"C:\Users\David\Desktop\calibur64k\vs2010\Debug\calibur_app.exe" /INCREMENTAL:NO /NOLOGO "kernel32.lib" "user32.lib" "d3dcompiler.lib" "gdi32.lib" "winspool.lib" "comdlg32.lib" "advapi32.lib" "shell32.lib" "ole32.lib" "oleaut32.lib" "uuid.lib" "odbc32.lib" "odbccp32.lib" "C:\Users\David\Desktop\calibur64k\vs2010\Debug\calibur64k.lib" /MANIFEST /ManifestFile:"Debug\calibur_app.exe.intermediate.manifest" /ALLOWISOLATION /MANIFESTUAC:"level='asInvoker' uiAccess='false'" /DEBUG /PDB:"C:\Users\David\Desktop\calibur64k\vs2010\Debug\calibur_app.pdb" /ASSEMBLYDEBUG /SUBSYSTEM:WINDOWS /PGD:"C:\Users\David\Desktop\calibur64k\vs2010\Debug\calibur_app.pgd" /TLBID:1 /DYNAMICBASE /NXCOMPAT /MACHINE:X86 /ERRORREPORT:QUEUE
我在互联网上找到的任何东西都没有帮助我:(任何想法的人?谢谢!
答案 0 :(得分:2)
问题已通过反复试验解决:)
任何人都可能对以下内容感兴趣:
链接器/清单文件/生成清单:将其设置为否。 链接器/清单文件/允许隔离:将其设置为否。 链接器/嵌入式IDL /忽略嵌入式IDL:将其设置为是。
就是这样。也许为C ++项目错误地设置了生成的PDB文件清单或可执行清单?
感谢您的回答。
答案 1 :(得分:2)
我的Visual c + + +设置:
Linker / Manifest File / Generate Manifest:是的。 链接器/清单文件/允许隔离:是的。 链接器/嵌入式IDL /忽略嵌入式IDL:否。
我在所有程序中都使用了这些设置,并且成功点击了断点。
所以,我的推论是你提出的建议可能不是正确的解决方案。