2017-06-23 9 views
0

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 
+2

-gフラグ – pm100

答えて

0

のgcc program.cを-oプログラム-lmysqlclient -l pthreadの

:レポートを取得

このコマンドは、デバッグ情報なしでプログラムをビルドします。微妙な他の方法でも間違っています。

あなたが欲しい:

gcc -g -pthread program.c -o program -lmysqlclient 

私は別の記事を見て、私は私はGDBに私のコマンドライン引数に置く方法を変更する必要があることをここに見た:

run $(--journal --day "Tuesday" --job "iOS" --client "SEAS")

完全に偽のコマンドラインです。 ではなく、でなければなりません。

+0

でコンパイルしたときに、私はまだデバッグ情報を取得できませんでした。 – Matt

+0

@Mattあなたは間違いやすいでしょう。 '-g'でコンパイルされたプログラムに' where'の出力を表示します。 –

関連する問題