在迁移到更新版本的CC编译器时,会出现在以前工作的模块中的段错误。
从核心文件中我可以了解segfault的起源功能。当我观察到这个功能时,我找不到任何可疑的东西。
第一个主要问题是,只有在“发布”(优化打开)中编译时才会重现段错误,并且不会在“调试”上重现。此外,段错误不会在g ++上重现。
现在我开始使用打印,并且在将cout
/ printf
(以二进制搜索段错误行/打印指针值)添加到某些行时出现了更大的问题代码,段错误没有重现。此外,我在代码中的某一行添加了一个cout来维护段错误,这可能意味着段错在该行之前发生。在之后注释行会使段错误消失。
对我来说,这会尖叫内存损坏(特别是堆栈),但我不知道如何在不查看生成的程序集的情况下推进这一过程。
有什么想法吗?提前谢谢。
我正在开发SunOS_5.10_Studio_12_5.12_64,CC版“Sun C ++ 5.12 SunOS_sparc 2011/11/16”