如何使用scons生成带有调试信息的MSVC解决方案
How to generate MSVC solution with debugging information using scons?
我正在为一个旨在跨平台的c++项目编写scons脚本。在windows中,脚本生成msvc解决方案。脚本片段如下:
ENV={'PATH':os.environ['PATH']}
if build_type=='Release':
CCFLAGS=['/Ox','/EHsc','/DNDEBUG','/W3']
else:
CCFLAGS=['/Zi','/EHsc','/W3']
ENV['TMP']=os.environ['TMP']
if os_architecture=='32bit':
arc='x86'
else:
arc='amd64'
env=Environment(CCFLAGS=CCFLAGS,CPPPATH=include_path,LIBPATH=lib_path,RPATH=lib_path,LIBS=libs,ENV=ENV,MSVS_ARCH=arc,TARGET_ARCH=arc)
在调试模式下,解决方案文件应该包含调试信息。但是,当我在调试模式下调试代码时,我会收到"找不到调试信息或调试信息不匹配"的警告。不知道为什么。生成了一个".pdb"文件。
Zi参数将告诉VS在编译时阶段创建一个pdb,但是,您仍然需要指定链接时pdb的生成(是的,这是非常冗余的,但超细粒度控制可能有一些原因(。如果你看到的PDB名为vc###.PDB(其中###是你的vc编译器版本(,那么这是你的obj文件的编译时PDB,而不是你实际dll的可调试链接时PDB。
总之,我在scons中添加了以下行,现在我有了一个可调试的程序。pdb:
# Produce one .PDB file per .OBJ when compiling, then merge them when linking.
# Doing this enables parallel builds to work properly (the -j parameter).
# See: http://www.scons.org/doc/HTML/scons-man.html section CCPDBFLAGS
#
env['CCPDBFLAGS'] = '/Zi /Fd${TARGET}.pdb'
我从以下非常有用的示例SConscript中得到的http://www.scons.org/wiki/MsvcIncrementalLinking
相关文章:
- 调试符号中缺少 QObject 类信息(编辑但存在其他 Qt 类)
- 创建进行生产构建并创建调试信息的C++生成文件的最佳方法?
- 在源文件中包含额外的调试信息,以便在代码::块中使用gdb进行调试
- Boost tread 代码在 VC++ 下编译,但不在 GCC 下编译:如何获得更好的调试信息
- 错误 VSP1011:无法获取调试信息.与 /配置文件链接器开关链接
- 在没有 -g 选项的情况下编译,但我想获得更详细的调试信息
- cmake/cpack 组件调试信息 rpm 包未出现
- LLDB - Qt 缺少调试信息
- C++ ATIOGLXX.pdb 包含查找模块 ATIOGLXX.dll 源代码所需的调试信息
- 如何将调试信息附加到LLVM通行证中的指令中
- 由procexp(MS process explorer)创建的VC10调试转储文件-只有堆栈信息,没有变量值
- 从LLVM IR获取精确的行/列调试信息
- Visual Studio-使用PDB进行调试,但缺少类型信息
- 二进制不是使用 Visual Studio 2008 中的调试信息构建的
- 如何使dumpObjectInfo打印调试信息
- 找不到"mpiexec"的调试信息或不匹配。找不到或打开 PDB 文件
- g++未在调试信息中进行编译
- visualstudio可以使用gcc生成的调试信息吗
- 使用Visual C++在单独的文件中提取调试信息
- 警告LNK4206:找不到预编译类型信息; 未链接或覆盖;链接对象,就好像没有调试信息一样