如果我使用相同的源重建,EXE是否具有相同的偏移量

If I rebuild using the same sources, will the EXEs have the same offsets?

本文关键字:是否 EXE 偏移量 如果 重建      更新时间:2023-10-16

我从用户那里得到一些带有Dr.Watson信息的崩溃报告,包括EIP。我想开始调试,然后设置EIP,看看这会把我带到哪一行。我还在Release构建中启用了line Info。

我在源代码管理中有一个标签,这样我就可以提取我用来构建它的源代码,但我不知道链接器是否会生成具有相同偏移量的EXE,否则EIP将毫无用处。

除非您能够确保自将代码签入版本控制以来,使用的所有库、所有源和链接器都没有更改,否则偏移量不会相同。这就是为什么许多公司实际上会不遗余力地将可执行文件置于配置管理之下。

根据经验,如果偏移量不一样,那么它会很快变得很明显,所以你至少可以检查一下,如果事情没有意义,就忽略EIP和其他可执行地址偏移量。

如果您构建了一个映射文件,并从崩溃报告的版本中保存了该文件,并且从重建的源中保存了映射文件,那么您可以进行一些比较分析(实际上是逐个函数),以从可执行地址和偏移量中获得一些有用性。