微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在特殊情况下如何处理GDB的分段错误?

我在linux上编写了一个C程序来处理大量的数据。 在大多数情况下似乎工作正常,但是在做工作时遇到了分段错误错误。 因为该程序工作正常与其他数据,所以我不知道如何处理这个问题。 顺便说一下如何在段错误发生时检索variables值?

这里是gdb输出

Program received signal SIGSEGV,Segmentation fault. tyn_p4d_encode32 (in=0x10000000c01,cnt_in=118248,out=0x10000000101 <Address 0x10000000101 out of bounds>,add_termination=1) at tyn_coder.c:645 645 length_stat[count_bits32(*(in + i)) - 1]++; Missing separate debuginfos,use: debuginfo-install glibc-2.14.90-24.fc16.6.x86_64 zlib-1.2.5-5.fc16.x86_64 (gdb) bt #0 tyn_p4d_encode32 (in=0x10000000c01,add_termination=1) at tyn_coder.c:645 #1 0x0000000000404582 in nodes_term32_flush (array=<optimized out>,size=<optimized out>,nodes_context=0x2ded020,is_last=0) at tyn_indexer.c:116 #2 0x0000000000407b78 in tyn_exsorter_sort (exsorter=0x64c4a0,context=0x2ded020,nodes_flush=0x404320 <nodes_term32_flush>,progress_callback=0x404190 <progress_callback>) at tyn_exsorter.c:131 #3 0x0000000000406ddf in tyn_build_index (tyn_config=0x61a060,index_name=0x4138d1 "MysqL_index") at tyn_indexer.c:731 #4 0x0000000000403850 in main (argc=<optimized out>,argv=<optimized out>) at tyn_indexer.c:943

如何将Windows位图转换为C + +中的ActionScript脚本

如果窗口未处于活动状态,请进行input(Windows)

什么是控制台winevents的正确用法

如何在C中打印程序计数器的确切值

访问Mozilla Firefox浏览器证书商店到HCERTSTORE

std :: locale(const char *)冻结…有时。 Visual Studio错误

如何编写testing应用程序来完全加载cpu

Windows中的C ++高精度时间测量

如何使用Valgrind检测细分故障细节?

如何阻止所有键盘和鼠标input到我的WinForms应用程序?

你需要编译和链接-g标志才能使用调试器; 但你似乎已经这样做了。 print (缩写为p )打印可变值; bt , up , down , frame是其他有用的命令。 否则, help在gdb或info gdb help 。

在这种情况下,你可以使用coredump。 首先启用coredumps ulimit -c unlimited …使用gdb像这样gdb <path to executable> <path to coredump> …在segfault的时候这个coredump将包含变量和框架等的值完好无损….所以你可以使用这些信息进行调试。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐