我正在编写一个用c编写的小工具,并遇到了一个我目前不知道如何解决的分段错误。在GDB中运行给出了以下提示:
Program received signal SIGSEGV, Segmentation fault. __strlen_sse42 () at ../sysdeps/x86_64/multiarch/strlen-sse4.S:32 ../sysdeps/x86_64/multiarch/strlen-sse4.S: File or Directory not found in ../sysdeps/x86_64/multiarch/strlen-sse4.S (gdb) bt 0 __strlen_sse42 () at ../sysdeps/x86_64/multiarch/strlen-sse4.S:32 1 0x00007ffff764fed8 in strdup_and_subst_obj () from /usr/lib/libgvc.so.5 2 0x00007ffff7650631 in make_label () from /usr/lib/libgvc.so.5 3 0x00007ffff765a6d1 in common_init_node_opt () from /usr/lib/libgvc.so.5 4 0x00007ffff309d700 in dot_init_node_edge () from usr/lib/graphviz/libgvplugin_dot_layout.so.6 5 0x00007ffff309dcd8 in dot_layout () from /usr/lib/graphviz/libgvplugin_dot_layout.so.6 6 0x00007ffff7633a94 in gvLayoutJobs () from /usr/lib/libgvc.so.5 7 0x00007ffff7639425 in gvLayout () from /usr/lib/libgvc.so.5 8 0x0000000000400eef in main ()
我会说:我错过了对我的系统或我的可执行文件(Ubuntu 11.04 64-Bit)的特定依赖关系。非常感谢任何建议:]
我目前正在使用:
gcc(Ubuntu / Linaro 4.5.2-8ubuntu4)4.5.2
编辑:
(gdb) info registers rax 0x6380e0 6521056 rbx 0x62dc14 6478868 rcx 0x0 0 rdx 0x0 0 rsi 0x639770 6526832 rdi 0x0 0 rbp 0x639770 0x639770 rsp 0x7fffffffd358 0x7fffffffd358 r8 0x0 0 r9 0x0 0 r10 0x7fffffffd140 140737488343360 r11 0x7ffff764fda0 140737343978912 r12 0x62dc14 6478868 r13 0x639770 6526832 r14 0x0 0 r15 0x7ffff7671d85 140737344118149 rip 0x7ffff6d7d49f 0x7ffff6d7d49f eflags 0x10246 [ PF ZF IF RF ] cs 0x33 51 ss 0x2b 43 ds 0x0 0 es 0x0 0 fs 0x0 0 gs 0x0 0
答案 0 :(得分:2)
分段错误通常是空指针解除引用。鉴于libc非常可靠,您很可能希望使用调试符号重新编译程序,并获取libgvc的Ubuntu包的调试变体。
“Missing strlen_sse4.S”只是调试器抱怨它无法找到该文件来为您提供崩溃站点的列表。您只需获取glibc源的副本即可检查该文件。