zoukankan      html  css  js  c++  java
  • error C3130: 内部编译器错误: 未能将插入的代码块写入PDB

            近期编译cocos2d-x的test突然出现这个错误,又一次编译也无法解决。

            一般出现这个错误是两个原因:一个是磁盘空间不足,还有一个是项目太大导致pdb文件太大,无法继续写入。

           原本cocos2d-x的test项目里面的"调试信息格式"是“C7兼容(/z7)”,后来我习惯性的改动为/zI了。

           MSDN中说的是:

    不生成不论什么调试信息,因此编译较快。

    /Z7

    生成包括用于调试器的完整符号调试信息的 .obj 文件。 符号化调试信息包括变量的名称和类型以及函数和行号。 不生成不论什么 .pdb 文件。

    对于第三方库的分发server,不生成 .pdb 文件是一个长处。 可是,在链接阶段和调试期间,用于预编译头的 .obj 文件是必需的。 假设 .pch 对象文件里仅仅有类型信息(没有代码),则还必须使用 /Yl(为调试库插入 PCH 引用) 进行编译。

    /Zi

    生成一个程序数据库(PDB),当中包括供调试器使用的类型信息和符号化调试信息。 符号化调试信息包括变量的名称和类型以及函数和行号。

    /Zi 不影响优化。 可是,/Zi 的确暗示了 /debug;有关很多其它信息,请參见 /DEBUG(生成调试信息)

    类型信息放置在 .pdb 文件而不是 .obj 文件里。

    能够将 /Gm(启用最小又一次生成)  /Zi 结合使用,但使用 /Z7 编译时不能使用 /Gm

    使用 /Zi  /clr 编译时,DebuggableAttribute 特性将不会放置到程序集元数据中;假设要使用该特性,则必须在源码中指定它。 该特性可影响应用程序的执行时性能。 有关 Debuggable 特性怎样影响性能以及怎样减轻性能影响的很多其它信息,请參见令映像更易于调试

    /ZI

    採用支持“编辑并继续”功能的格式生成程序数据库(如上所述)。 假设想使用“编辑并继续”调试,则必须使用此选项。 由于大多数优化与“编辑并继续”不兼容,所以使用 /ZI 会禁用代码中的全部 #pragma optimize 语句。

    /ZI 会导致在编译中使用 /Gy(启用函数级链接)  /FC(所诊断源码文件的完整路径)

    /ZI  /clr(公共语言执行时编译) 不兼容。


    可见/Zi与/ZI区别不大,就是优化和信息完整度的区别,而/Z7则是把信息放在obj而不是pdb中,这样就不会发生pdb文件太大无法写入的问题了。

    
  • 相关阅读:
    day7随笔
    day6随笔
    day5笔记
    uniapp 全屏蒙版下的其他view禁止滑动
    uniapp scroll-view 组件右侧的滚动条
    uni 组件 头部
    根据两点的经纬度查询两点间的距离
    仅供学习使用的一些 相关vue类
    仅供学习使用的一些样式+行为
    百度地图简单调用
  • 原文地址:https://www.cnblogs.com/mengfanrong/p/4229563.html
Copyright © 2011-2022 走看看