非常奇怪的行为:我的c++程序突然退出,但它在Eclipse CDT的调试模式下完美地运行到了最后

Very Strange behavior: My c++ program suddenly exit but it run flawlessly o the end in debug mode in Eclipse CDT

本文关键字:调试 模式 CDT Eclipse 最后 运行 完美 我的 c++ 退出 突然      更新时间:2023-10-16

我在ubuntu 64位的Eclipse CDT中有自己的c++程序,该程序使用外部编码检测库。正如您可能猜测的那样,我使用gcc来编译我的程序,并使用GDB进行调试。现在,我在编程生活中看到的最奇怪的行为是:当我在Eclipse中使用"debug As"调试程序时,它完美地工作到最后,但当我选择"Run As"时,它将突然终止在程序的中间,而不会在控制台中显示任何错误或异常消息!!!

有人知道这个奇怪的问题吗?

了解如何调试非常重要。如果调试器无法执行此操作,则可以尝试注释掉某些代码行,直到程序正常工作。若这不起作用,那个么您的程序可能会遇到一个heisenbug,我建议您在运行分析变量时在控制台中打印变量。您还应该检查您的代码。有时这可能是一个非常愚蠢的错误。

真正帮助我的是找到UB行为,正如@PaulMcKenzie所建议的那样。对于clang/gcc,您可以添加-fsanitize=undefined来查看问题的原因。换句话说,编译并运行这样的程序:clang -fsanitize=undefined -o myprogram myprogram.c -O3,然后修复打印到控制台中的问题。