gpt4 book ai didi

c - 如何在 centos 6.5 中 gdb 一个有段错误的核心文件?

转载 作者:太空宇宙 更新时间:2023-11-04 10:23:27 25 4
gpt4 key购买 nike

我的程序是多线程的。我有一个核心文件,当我尝试调试它时,我得到了这个。

Program terminated with signal 11, Segmentation fault.
#0 memcpy () at ../sysdeps/x86_64/memcpy.S:91
91 movl %ecx, (%rdi)
Missing separate debuginfos, use: debuginfo-install libssh2-1.8.0-2.0.cf.rhel6.x86_64
(gdb) bt
#0 memcpy () at ../sysdeps/x86_64/memcpy.S:91
#1 0x00007f981b342feb in ?? ()
#2 0x00000000025f1ef0 in ?? ()
#3 0x00000000025edef0 in ?? ()
#4 0x00007fff4b65a810 in ?? ()
#5 0x0000000000000001 in ?? ()
#6 0x00000000025cb800 in ?? ()
#7 0x00000000025ccea0 in ?? ()
#8 0x0000000000000000 in ?? ()

为什么 bt 信息是“???”我可以确定哪个线程以及什么情况下出现段错误吗?

谢谢。

最佳答案

为了运行 gdb 并充分利用它,首先,您需要使用 gcc 中的 -g 或 -ggdb3 选项编译您的源代码以下方式:

gcc -ggdb3 sample.c -o sample

在此之后,您将获得可以执行的可执行文件或二进制文件。执行后,程序将生成段错误并创建核心转储。您可以通过 gdb 以下列方式使用此核心文件来获取回溯:

gdb ./sample /path/to/core/file

您甚至可以使用 gdb 启动您的程序,而无需实际单独执行它并显式生成核心文件。如果要这样做,请执行以下命令:

gdb ./sample

关于c - 如何在 centos 6.5 中 gdb 一个有段错误的核心文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42784496/

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