首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何删除Windows DLL调试信息?

如何删除Windows DLL调试信息?
EN

Stack Overflow用户
提问于 2018-06-04 06:44:57
回答 2查看 0关注 0票数 0

我通常不适用于Windows开发,并且完全不熟悉工具链和构建系统。我的嵌入式产品在其文件系统中包含来自第三方的一些Windows DLL。

我遇到了一个问题:与以前的版本相比,这些DLL的最新版本的尺寸增加了三倍,并且它们不再适合文件系统。DLL的功能没有太多变化,所以我怀疑开发者忘了在这个下拉菜单中去掉调试符号。我会问他们,但由于时区和语言的差异,得到答案往往需要几天的时间。

有人可以解释一下,对于不熟悉VisualC的人使用简单的步骤,如何确定一个DLL是否仍然包含调试信息以及如何去除它?

EN

回答 2

Stack Overflow用户

发布于 2018-06-04 15:22:48

即使这很麻烦,仍然希望从开发人员处获得发布版本,因为默认情况下,调试版本是在禁用代码优化的情况下编译的。所以,即使你以某种方式除去了调试信息,你仍会留下代码效率不高的代码。

至于确定你有什么样的DLL,你可以使用Dependency Walker来查看你的DLL是否连接到VC运行时库的调试或发布版本。

票数 0
EN

Stack Overflow用户

发布于 2018-06-04 16:29:32

rebase是Microsoft工具集的一部分。除了为dll设置基址之外,它还可以将任何附加的调试信息删除到单独的.dbg文件中。

rebase -i 0x10000000 -a -x .\ -p

理论上,应该尝试确定DLL是否已经构建到一个唯一的基址,并使用它。另外,选择一个基本地址,以尽量减少与应用程序使用的任何其他dll发生冲突的可能性,以便Windows在加载DLL时不必修补它。在一个加载器通常将模块的加载地址作为安全特性随机化的时代,我不确定是否值得特别地设置基本地址。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/-100000214

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档