uly*_*is2 17 c++ gdb segmentation-fault undefined-behavior
我的问题听起来很具体,但我怀疑它仍然可能是C++调试问题.
我正在使用omnet ++来模拟无线网络.omnet ++本身就是一个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
有谁可以告诉我为什么运行失败但调试没有?
非常感谢!
Emp*_*ian 31
退出代码139(人们说这意味着内存碎片)
不,这意味着你的程序死于信号11
(SIGSEGV
在Linux和大多数其他UNIX上),也称为segmentation fault
.
有谁可以告诉我为什么运行失败但调试没有?
您的程序显示未定义的行为,并且可以执行任何操作(包括有时可能正常工作).
你的第一个步骤应该Valgrind的下运行此程序,并修复它报告的所有错误.
如果做上述后,程序仍然崩溃,那么你就应该让它核心转储(ulimit -c unlimited; ./a.out
),然后分析其与GDB是核心转储:gdb ./a.out core
; 然后使用where
命令.
归档时间: |
|
查看次数: |
74513 次 |
最近记录: |