诡异的Visual Studio 的调试bug
来源:互联网 发布:猎场网络播放平台 编辑:程序博客网 时间:2024/04/29 18:19
工程结构
包含有静态库
motion.lib 一个UI逻辑的库
HGErender.lib 使用一个motion的接口实现的HGE渲染器,与motion.lib没有链接和依赖关系
一个exe静态链接motion.lib和HGErender.lib
motion中加入了一些flash支持,将flash的包含放到了预编译头文件,这部分头文件exe是没有引用的
表现症状
exe可以正常运行,但是在motion中新添加的flash类实例化后无法看到成员
重编,重新link,清空重编无用
换用vs2005,依然无用,但是报了一个Error: error in OMF type information 错误
解决方法
尝试将flash包含到预编译头的文件放到对外包含中,让exe也能看到这一部分
问题解决
分析
VS的调试系统并不是完全开发,因此我们只能从一些表象来分析一些调试器原理及行为
这个bug的原因就在 作为调试入口的exe并没有获得完全的motion里调试的信息。如果将motion作为dll加载,理论分析不会出现这种问题。dll将被作为一个单独的调试入口,需要单独加载独立的pdb。
本例中,静态库中的调试信息并没有链接到exe,因此看不到成员的任何信息
扩展
大多数的游戏或应用程序都是使用静态库来做链接,这样无论是编写还是代码安全都有所兼顾。但对于工程模块之间的互相隔离,C/C++静态库本身的毛病(CRT内存分配及静态,全局变量问题)就变得尤为严重。
而使用动态链接库的接口方式也是有一部分程序这样使用的,如果为了安全或者加密,可以将动态链接库放到自己的包内,使用从内存读取dll的技术,这样安全,工程架构又清晰
- 诡异的Visual Studio 的调试bug
- 发现Visual Studio和Word之间的一个诡异bug
- 警惕VS(Visual Studio)的调试BUG漏洞
- Visual Studio调试过程中的诡异情况
- 一个诡异的bug
- Visual Studio的调试技巧
- visual studio的调试技巧
- Visual Studio的调试技巧
- Visual Studio的调试技巧
- visual studio的调试技巧
- Visual Studio的调试技巧
- Visual Studio的调试技巧
- [.NET]Visual Studio 2003的一个bug
- Visual Studio 2005 Team System的BUG?
- Visual Studio 2005 SP1 的几个Bug
- 貌似发现一个Visual Studio的BUG?
- Visual Studio 2010 令人头疼的BUG
- visual studio 2012发现的小bug
- 两个数之间的最短路径问题
- C++中的单例模式
- GCC强大背后
- 字节那些事儿!
- 游戏工程里的使用C++静态库与动态库
- 诡异的Visual Studio 的调试bug
- 如何使用下面的HTML5功能创建离线的网页和应用程序
- DirectX 9高效渲染之利用Constant构建渲染数据
- Vaadin Web应用开发教程(47): SQLContainer-过滤及排序
- 静态模型渲染策略
- Ogitor中Gizmo的绘制技巧
- Android ApiDemos示例解析(158):Views->Layouts->TableLayout->03.Long Content
- Direct3D9 Fx/HLSL的若干条有用的笔记
- 用Shader实现标准光照模型