我正在尝试使用Purify 6来分析我们使用VC ++ 2003(7.1)构建的可执行文件中的内存损坏。
当我使用以下命令检测二进制文件时:
purify /Replace=yes /Run=no myprog.exe
仪器中止告诉我可执行文件是逐步链接的。困惑,我检查了构建选项,但/INCREMENTAL:NO
就在那里。可以肯定的是,我重新构建了它,并且在链接时正确地传递了选项。
有没有办法知道可执行文件是否以增量方式链接?
我查看了dumpbin /HEADERS
说的内容,但没有看到任何相关内容。
感谢。
答案 0 :(得分:2)
选项1:
c:...> dumpbin / summary whatever.exe
寻找“.textbss”部分。
我不确定这是100%可靠,但根据我的经验,链接器总是在进行增量链接时添加此部分。
选项2:
在可执行文件旁边查找“.ilk”文件。 Visual Studio似乎很好用于在不使用时清理它们,因此禁用增量链接和构建(甚至不是“重建”)应该将其删除。
选项3:
启用构建日志记录(工具/选项/项目),并在其生成的buildlog.html文件中查找“/ INCREMENTAL”或“/ INCREMENTAL:NO”。
选项4:
解析.vcproj文件。 (ICK!)