gpt4 book ai didi

c++ - 调试使用调试标志运行的代码和使用 opt 标志运行的段错误

转载 作者:太空狗 更新时间:2023-10-29 23:05:26 25 4
gpt4 key购买 nike

我有一段 C++ 代码会出现带有优化标志的段错误,但当我使用调试标志运行它时却不会。这使我无法使用调试器。除了大量的 cout 语句之外,还有其他方法/指南吗?

我在 *nix 平台上使用 intel-12.1 编译器,我很确定这是一个内存问题,我需要用 valgrind 解决这个问题。唯一让我困惑的是为什么它在 Debug模式下不显示。

最佳答案

Valgrind 是基于 Unix 系统的有用工具,用于对 Release模式可执行文件进行故障排除(gflags 和 WinDebug 对 Windows 很有用。)

我还建议不要放弃调试器 - 您可以在调试器中运行非调试可执行文件,并且仍然可以获得有关段错误的有用信息。通常,您还可以添加某种级别的调试信息,即使启用了优化,也可以为您提供更多上下文。您还可以检查英特尔编译器可能提供的任何 Debug模式堆检查工具,因为这些工具在调试版本中可能无法检测到(由于不同的内存管理)。

另请注意,通常有多个级别的优化可用于“ Release模式”。您可以尝试退回到不太积极的优化级别,看看错误是否仍然出现。

您还可以查看英特尔编译器网站,查看是否有任何关于优化您正在使用的编译器版本的错误修正/错误报告。

如果这些都没有帮助,您可以尝试使用备用编译器(除非您使用的是英特尔特定的编译器)来查看问题是否与编译器相关。

最后,正如 klm123 指出的那样,注释掉 block 是定位问题的好方法。

关于c++ - 调试使用调试标志运行的代码和使用 opt 标志运行的段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19606568/

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