C GDB报告(带有list和frame命令)不列出行号

C GDB报告(带有list和frame命令)不列出行号,c,segmentation-fault,gdb,C,Segmentation Fault,Gdb,我正在使用gdb来找出我的程序中哪里有SEGFULT。但是,我的GDB报告没有指定行号,它只是命名函数 root@brute-force-compute:~# gcc -g -pthread program.c -o program -lmysqlclient root@brute-force-compute:~# gdb program (gdb) run --journal --day "Tuesday" --job "iOS" --client "SEAS" Starting prog

我正在使用gdb来找出我的程序中哪里有SEGFULT。但是,我的GDB报告没有指定行号,它只是命名函数

root@brute-force-compute:~# gcc -g -pthread program.c -o program -lmysqlclient
root@brute-force-compute:~# gdb program


(gdb) run --journal --day "Tuesday" --job "iOS" --client "SEAS"
Starting program: /root/serapis --journal --day "Tuesday" --job "iOS" --client "SEAS"
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".

Program received signal SIGSEGV, Segmentation fault.
__strcpy_sse2_unaligned () at ../sysdeps/x86_64/multiarch/strcpy-sse2-unaligned.S:296
296 ../sysdeps/x86_64/multiarch/strcpy-sse2-unaligned.S: No such file or directory.
(gdb) list
291 in ../sysdeps/x86_64/multiarch/strcpy-sse2-unaligned.S
编辑:使用
-g
标志编译

gcc program.c -o program -g -lmysqlclient -l pthread
gdb program
(gdb) run --journal --day "Tuesday" --job "iOS" --client "SEAS"
Program received signal SIGSEGV, Segmentation fault.
__strcpy_sse2_unaligned () at ../sysdeps/x86_64/multiarch/strcpy-sse2-unaligned.S:296
296 ../sysdeps/x86_64/multiarch/strcpy-sse2-unaligned.S: No such file or directory.
(gdb) list
291 in ../sysdeps/x86_64/multiarch/strcpy-sse2-unaligned.S
(gdb) frame
#0  __strcpy_sse2_unaligned () at ../sysdeps/x86_64/multiarch/strcpy-sse2-unaligned.S:296
296 in ../sysdeps/x86_64/multiarch/strcpy-sse2-unaligned.S
第一次尝试:

gcc program.c -o program -lmysqlclient -l pthread
gdb program 
(gdb) run --journal --day "Tuesday" --job "iOS" --client "SEAS"
Starting program: root/program --day "Tuesday" --job "iOS" --client "SEAS"
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".

Program received signal SIGSEGV, Segmentation fault.
__strcpy_sse2_unaligned () at ../sysdeps/x86_64/multiarch/strcpy-sse2-unaligned.S:296
296 ../sysdeps/x86_64/multiarch/strcpy-sse2-unaligned.S: No such file or directory.
(gdb) where
#0  __strcpy_sse2_unaligned () at ../sysdeps/x86_64/multiarch/strcpy-sse2-unaligned.S:296
#1  0x0000000000402c69 in init_journal ()
#2  0x00000000004086d4 in main ()
(gdb)list
291 in ../sysdeps/x86_64/multiarch/strcpy-sse2-unaligned.S
(gdb) frame
#0  __strcpy_sse2_unaligned () at ../sysdeps/x86_64/multiarch/strcpy-sse2-unaligned.S:296
296 in ../sysdeps/x86_64/multiarch/strcpy-sse2-unaligned.S
(gdb) backtrace
#0  __strcpy_sse2_unaligned () at ../sysdeps/x86_64/multiarch/strcpy-sse2-unaligned.S:296
#1  0x0000000000402c69 in init_journal ()
#2  0x00000000004086d4 in main ()
main
中,我执行以下操作:

if(strcmp(argv[1], "--journal") == 0){
        printf("\nInitializing single integral machine..\n\n");
        char * template = argv[2];
        init_journal(day, job, client);
    }
其中,日期、作业、客户机在
main
中的设置较早,如下所示:

   if(strcmp(argv[i], "--day") == 0){
        day = argv[++i];
   }
我看了不同的帖子,在这里我看到我应该改变在gdb中输入命令行参数的方式:

run $(--journal --day "Tuesday" --job "iOS" --client "SEAS")
然后我得到报告:

Program received signal SIGSEGV, Segmentation fault.
__strcmp_sse2_unaligned () at ../sysdeps/x86_64/multiarch/strcmp-sse2-unaligned.S:31
31  ../sysdeps/x86_64/multiarch/strcmp-sse2-unaligned.S: No such file or directory.
(gdb) list
26  in ../sysdeps/x86_64/multiarch/strcmp-sse2-unaligned.S
(gdb) frame
#0  __strcmp_sse2_unaligned () at ../sysdeps/x86_64/multiarch/strcmp-sse2-unaligned.S:31
31  in ../sysdeps/x86_64/multiarch/strcmp-sse2-unaligned.S
gcc program.c-o program-lmysqlclient-l pthread

此命令生成不带调试信息的程序。这在其他方面也是不正确的

你想要:

gcc -g -pthread program.c -o program -lmysqlclient
我看了不同的帖子,在这里我看到我应该改变在gdb中输入命令行参数的方式:

run $(--journal --day "Tuesday" --job "iOS" --client "SEAS")
run$(-journal--day“星期二”--job“iOS”--client“SEAS”)


这完全是假的命令行。您不应该这样做。

使用-g flag编译当我使用该行编译时,仍然没有得到任何调试信息。@Matt您可能弄错了。在使用
-g
编译的程序上显示
的输出,其中