gpt4 book ai didi

c++ - 程序在没有调试符号的情况下崩溃,使用它们运行良好(在任何一种情况下都没有优化或任何东西)

转载 作者:行者123 更新时间:2023-11-30 02:02:43 25 4
gpt4 key购买 nike

我遇到了一个非常令人费解的崩溃,并且无法在我的程序中跟踪它。

我不知道它的来源在哪里,因为每当我尝试链接 /debug 标志以便使用调试符号进行调试时,崩溃就会消失!

这似乎与优化无关(我使用 /Od 编译以禁用编译器优化,并且我使用链接时代码生成)而且独立于调试信息本身(我正在使用 /Zi 进行编译)。出于某种原因,当在没有 /debug 标志的情况下调用链接器时,一切行为都会不同。

这可能是什么原因造成的?

最佳答案

原来罪魁祸首是链接器合并 static const int 字段

显然,如果您有多个相同类型和值的 static const 字段,链接器将合并它们,但前提是您不链接调试符号。

我使用这些字段的地址来区分它们,事实证明它们对链接器来说都是一样的,因此对其余代码来说都是一样的。

我是怎么想出来的?
很多 print 语句(几个小时)让我意识到正在执行错误的代码,直到我终于意识到原因。

关于c++ - 程序在没有调试符号的情况下崩溃,使用它们运行良好(在任何一种情况下都没有优化或任何东西),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12857998/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com