我遇到了一个非常令人困惑的崩溃,并且无法在我的程序中跟踪它。
我不知道它的来源在哪里,因为每当我尝试链接/debug
标志以便使用调试符号进行调试时,崩溃就会消失!
这似乎与优化无关(我用/Od
编译来禁用编译器优化,而我不使用链接时代码生成)并且独立于调试信息本身(我正在编译/Zi
)。出于某种原因,当在没有/debug
标志的情况下调用链接器时,一切都表现不同。
可能导致这种情况的原因是什么?
答案 0 :(得分:4)
事实证明,链接器static const int
字段。
显然,如果您有多个具有相同类型和值的static const
个字段,链接器将合并它们,但前提是您没有链接调试符号。
我正在使用这些字段的地址来区分它们,结果发现它们对链接器看起来都是一样的,因此代码的其余部分也是如此。
我是怎么想出来的?
{strong>很多的print
语句(小时)让我意识到错误的代码正在被执行,直到我终于意识到原因。