2010-11-21 22 views
6

私は、マルチスレッドプログラムであるansi Cでアプリケーションをデバッグしています。
いつか、メインスレッドでSIGSEGVフォールトが発生します。バックトレースby SIGSEGV

(gdb) backtrace full 
#0 0x0000000000000000 in ??() 
No symbol table info available. 
#1 0x0000000000000000 in ??() 
No symbol table info available. 
(gdb) info registers 
rax   0x1  1 
rbx   0x0  0 
rcx   0x0  0 
rdx   0x2  2 
rsi   0x458e7aa0  1166965408 
rdi   0x0  0 
rbp   0x0  0x0 
rsp   0x458e7b60  0x458e7b60 
r8    0x458e7b20  1166965536 
r9    0x0  0 
r10   0x0  0 
r11   0x206 518 
r12   0x2aaaac400e70 46912522686064 
r13   0x2aaaac514090 46912523813008 
r14   0x1  1 
r15   0x18505f10  407920400 
rip   0x0  0 
eflags   0x10206 [ PF IF RF ] 
cs    0x33  51 
ss    0x2b  43 
ds    0x0  0 
es    0x0  0 
fs    0x63  99 
gs    0x0  0 
fctrl   0x37f 895 
fstat   0x0  0 
ftag   0xffff 65535 
fiseg   0x0  0 
fioff   0x0  0 
foseg   0x0  0 
fooff   0x0  0 
fop   0x0  0 
mxcsr   0x1f80 [ IM DM ZM OM UM PM ] 
(gdb) 

この情報はコアファイルからのもので、私はLinux環境でのデバッグと非常に家族のいないよ、私は問題がどこに見つけるために何かできることはありますか?

編集

gcc -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"src/redisconnector.d" -MT"src/redisconnector.d" -o"src/redisconnector.o" "../src/redisconnector.c" 
+0

GCC – osgx

+1

のコンパイルオプションとバージョンをすべて表示してください。質問を編集しました。 – secmask

答えて

2

"-g"オプションでアプリケーションを再コンパイルします。

コアファイルで

使用Gdbのではないが、アプリケーション全体を実行するには:GDBの

gdb --args ./application application_options 

はその後、 "実行" コマンドを使用します。

gdbから実行するとSIGSEGVが検出され、gdbは失敗したスレッドに集中します。

+1

投票、gdbでアプリケーションを実行することをお勧めします。 – secmask

1

まあに従うようすべてのソース・ファイルは、まず、あなたのバックトレースが使用可能な何かを持っているように、有効なデバッグを使用してコンパイルする必要があります、フラグを指定してコンパイルされています。フラグはgcc -g

+0

私はすでに-g3でコンパイルしましたが、それだけで表示できます。 – secmask

3

RIPは0を指しています。おそらく、スタックのオーバーフローが原因です。あなたのRBPも0なので、backtrace gdbコマンドはあなたに何も言わないでしょう。

+0

追加するには、スタックオーバーフローの場合は、配列(または文字列)の最後を過ぎて書き込んでしまいます。私はまずそれをチェックしたい。 – OmnipotentEntity

+0

@OmnipotentEntity配列の終わりを過ぎて書き込むとバッファオーバーフローが発生すると思いますか? –

+0

バッファがスタック上にある場合は、同じことです。バッファオーバーフローは、バッファ、スタック、ヒープなどです。スタックオーバーフローは、特にスタックのバッファを上書きします。命令ポインタがねじ込まれているため、これは特にスタックのオーバーフローと判断できます。 :) – OmnipotentEntity