gdbを使って私のプログラムでsegfaultがどこにあるのか理解しています。しかし、私のGDBレポートは行番号を指定していません。GDBレポート(リストとフレームコマンドで)は行番号をリストしません
[email protected]:~# gcc -g -pthread program.c -o program -lmysqlclient
[email protected]:~# 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
EDIT:-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
最初の試みでコンパイルすると:main
で
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()
、私は:
if(strcmp(argv[1], "--journal") == 0){
printf("\nInitializing single integral machine..\n\n");
char * template = argv[2];
init_journal(day, job, client);
}
日、仕事、CLI
if(strcmp(argv[i], "--day") == 0){
day = argv[++i];
}
私は別の記事を見て、私は私はGDBの私のコマンドライン引数に置く方法を変更する必要があることをここで見ました:これは以下のようにENTは、各以前main
で設定されている
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
-gフラグ – pm100