Open Cascade作为世界上唯一一款成熟的开源CAD几何内核,无论是商业开发还是供广大CAD开发人员学习,都能发挥重要的作用。
由于Open Cascade的核心源码全部开放,开发人员在调试基于OCC编写的程序时,可以进入内部源码进行调试,方便找到Bug的原因,也可以辅助学习一些CAD核心几何算法原理。
但是如果直接采用官方提供的OCC库,调试代码时按F11是无法进入Open Cascade内部源码的,原因是OCC官方发布的dll文件目录(OpenCASCADE-7.6.0-vc14-64\opencascade-7.6.0\win64\vc14\bin)里只有dll文件,缺少pdb文件。
图1 OCC官方自带的dll文件目录
pdb文件是VS编译链接时生成的文件,里面存储了VS调试程序时所需要的基本信息,主要包括源文件名、变量名、函数名、FPO(帧指针)、对应的行号等,如果有这些文件的话,就可以进入Open Cascade内部进行调试。
所以要想进入OpenCascade内部源码进行调试,必须用相应的编译器(比如VS2015)手动编译Open Cascade源码,然后运行时调用编译出来的dll文件即可。
以VS2015+Open Cascade7.6.0为例,具体步骤为:
- 安装opencascade-7.6.0-vc14-64.exe,然后双击安装目录下的C:\XXX\OpenCASCADE-7.6.0-vc14-64\opencascade-7.6.0\msvc.bat,直接打开OCCT项目;
- 设置编译选项为x64 Debug(只有在Debug模式下才会生成pdb文件),编译整个OCCT项目,编译顺序为:FoundationClass、ModelingData、ModelingAlgorithms,然后再编译剩余的模块;
- 编译结束后,会在OpenCASCADE-7.6.0-vc14-64\opencascade-7.6.0\win64\vc14\bind目录下生成所需的dll文件和pdb文件。
- 将头文件目录、链接文件目录添加到VS工程中。头文件目录示例:C:\XXX\OpenCASCADE-7.6.0-vc14-64\opencascade-7.6.0\win64\vc14\inc。链接文件目录示例:C:\XXX\OpenCASCADE-7.6.0-vc14-64\opencascade-7.6.0\win64\vc14\lib
- 将生成的dll文件目录加入到环境变量Path中或者copy编译生成的所有dll文件和pdb文件到VS工程中的编译结果目录。
- 再次打开项目进行调试,按F11即可进入Open Cascade内部。
图2 手动编译生成的dll文件目录
更新:上面第2步,现在不建议在Debug模式下编译,因为只要设置一下,Release模式下也是可以编译生成出pdb文件的,由于实测Release模式下编译的OCC速度更快,建议采用Release模式进行编译,具体设置方法如下:
OCCT项目右键——属性——配置属性——链接器——调试——生成调试信息——否改为Debug。然后再编译生成OCC。