1

我正在尝试使用 Purify 6 来分析我们使用 VC++ 2003 (7.1) 构建的一个可执行文件中的内存损坏。

当我使用以下命令检测二进制文件时:

purify /Replace=yes /Run=no myprog.exe

仪器中止告诉我可执行文件是增量链接的。困惑的是,我检查了构建选项,但/INCREMENTAL:NO在那里。可以肯定的是,我重建了它,并且该选项在链接时正确传递。

有没有办法知道可执行文件是否被增量链接?

我看了看内容dumpbin /HEADERS,但没有看到任何相关内容。

谢谢。

4

1 回答 1

3

选项1:

c:...>dumpbin /summarywhatever.exe

寻找“.textbss”部分。

我不确定这是否 100% 可靠,但根据我的经验,链接器在进行增量链接时总是添加此部分。

选项 2:

在可执行文件旁边查找“.ilk”文件。Visual Studio 似乎很适合在不使用它们时清理它们,因此禁用增量链接和构建(甚至不是“重建”)应该将其删除。

选项 3:

启用构建日志记录(工具/选项/项目)并在它生成的 buildlog.html 文件中查找“/INCREMENTAL”或“/INCREMENTAL:NO”。

选项 4:

解析 .vcproj 文件。(恶心!)

于 2009-07-13T18:18:55.080 回答