gpt4 book ai didi

c++ - 运行时计数器退出代码 139,但 gdb 使其通过

转载 作者:IT老高 更新时间:2023-10-28 22:25:07 28 4
gpt4 key购买 nike

我的问题听起来很具体,但我怀疑它仍然可能是 C++ 调试问题。

我正在使用 omnet++ 来模拟无线网络。 omn​​et++ 本身就是一个 c++ 程序。

我在运行我的程序时遇到了一个奇怪的现象(在 Ubuntu 12.04 中使用 omnet++ 4.2.2 修改了 inet 框架):当触摸代码的某个部分时,程序以退出代码 139 退出(人们说这意味着内存碎片) ,当我尝试调试时,gdb 不会报告模拟之前退出的“有问题”代码有任何问题,实际上,调试会通过这部分代码并输出预期结果。

gdb 版本信息:GNU gdb (Ubuntu/Linaro 7.4-2012.04-0ubuntu2.1) 7.4-2012.04

谁能告诉我为什么运行失败但调试没有?

非常感谢!

最佳答案

exit code 139 (people say this means memory fragmentation)

不,这意味着您的程序因信号 11(Linux 和大多数其他 UNIX 上为 SIGSEGV)而死,也称为 segmentation fault .

Could anybody tell me why the run fails but debug doesn't?

您的程序表现出未定义的行为,并且可以做任何事情(包括有时看起来可以正常工作)。

您的第一步应该是在 Valgrind 下运行这个程序,并修复它报告的所有错误。

如果执行上述操作后,程序仍然崩溃,那么你应该让它转储核心(ulimit -c unlimited;./a.out),然后用 GDB 分析核心转储:gdb ./a.out 核心;然后使用 where 命令。

关于c++ - 运行时计数器退出代码 139,但 gdb 使其通过,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15600296/

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