我在ubuntu 64位的Eclipse CDT中有自己的c++程序,它使用外部编码检测库。正如你可能猜到的,我使用gcc编译我的程序和GDB进行调试。现在我在编程生活中看到的最奇怪的行为:当我在Eclipse中使用“Debug As”调试我的程序时,它完美地工作到最后,但是当我选择“Run As”时,它会在程序中间突然终止,而不会在控制台中显示任何错误或异常消息!!!有人知道这个奇怪的问题吗?
2mbi3lxu1#
知道如何调试是非常重要的。如果你的调试器无法做到这一点,你可以尝试注解掉某些代码行,直到程序正常工作。如果这不起作用,你的程序可能患有heisenbug,我建议你在运行时在控制台中打印出变量来分析它们。你也应该检查你的代码。有时这可能是一个非常愚蠢的错误。
blmhpbnm2#
真正对我有帮助的是找到UB行为,正如@PaulMcKenzie所建议的那样。对于clang/gcc,你可以添加-fsanitize=undefined来看看是什么导致了这个问题。换句话说,编译并运行类似于下面的代码:clang -fsanitize=undefined -o myprogram myprogram.c -O3,然后修复打印到控制台中的问题。
clang
gcc
-fsanitize=undefined
clang -fsanitize=undefined -o myprogram myprogram.c -O3
2条答案
按热度按时间2mbi3lxu1#
知道如何调试是非常重要的。如果你的调试器无法做到这一点,你可以尝试注解掉某些代码行,直到程序正常工作。如果这不起作用,你的程序可能患有heisenbug,我建议你在运行时在控制台中打印出变量来分析它们。你也应该检查你的代码。有时这可能是一个非常愚蠢的错误。
blmhpbnm2#
真正对我有帮助的是找到UB行为,正如@PaulMcKenzie所建议的那样。对于
clang
/gcc
,你可以添加-fsanitize=undefined
来看看是什么导致了这个问题。换句话说,编译并运行类似于下面的代码:clang -fsanitize=undefined -o myprogram myprogram.c -O3
,然后修复打印到控制台中的问题。