Railsアプリを書いてる場合はあまり関係ないですが、
セグメンテーションエラー(SEGV)などに遭遇した場合に、
原因を調査する方法を紹介します。

まずは、coreを吐かせるためにulimitの設定をします。

sh>>
% ulimit -c
0
% ulimit -c unlimited
% ulimit -c
unlimited
<<--

ulimit -cが0になっている場合は、coreを吐かないので、
適当な値を設定するか、unlimitedにします。

あとは、プログラムを実行してランタイムエラーを引き起こし、
coreファイルを出力させます。

sh>>
% ./command
zsh: segmentation fault (core dumped) ./command
<<--

さて、今度はgdbの出番です。
gdbは対話型のデバッガです。
以下のように、gdbにオプションを指定して起動します。

pre>>
% gdb ./command --core=./core

.. snip ..

Core was generated by `./command'.
Program terminated with signal 11, Segmentation fault.
#0 0x08048a43 in vec_sub (a=0x804e248, b=0xbfa9e720) at vec.c:124
124 const __m128 t_vec5 = (*a) ;
(gdb)
<<--

すると、上記のように対話セッションが開始されます。
あとは、表示された内容や、gdbのコマンドを使って原因を解析すればOKです。
例えば上記の出力の例では、aのアドレスが16バイト境界に乗っていないのが
原因であることが推察できます。

ソースコードが手元にある場合は、gccに-gオプションをつけてコンパイル
することで、lコマンドによって以下のようにエラーが発生した場所の周辺の
ソースコードを見たりすることができるようになります。

pre>>
(gdb) l
119 return t_vec3 ;
120 }
121
122 __m128 vec_sub (const __m128 * a, const __m128 * b)
123 {
124 const __m128 t_vec5 = (*a) ;
125 const __m128 t_vec4 = (*b) ;
126 const __m128 t_vec6 = _mm_sub_ps( t_vec5 , t_vec4 ) ;
127 return t_vec6 ;
128 }
<<--

gdbを終了する場合は、qコマンドを実行します。

posted by genki genki on Sat 15 Mar 2008 at 00:31 with 0 comments
Contents rssrss
光ファイバーを二次元振動させて走査するAR用ディスプレイ
因果の取り違え
Swift2's defer for CoffeeScript
mongodb-3.0からcreateIndexのdropDupsが無くなったらしい
mongodb-3.0以降のWiredTigerの設定を動的に変更する方法
一般楕円の高速生成アルゴリズムへの道標
farro mantecatoのレシピ
Droonga関連の記事のまとめ
RuntimeErrorの特定のメッセージに限定してrescueする方法
jQueryでscriptタグを実行せずにappendする
Tags
coffeescriptdefergroongajsmemonodenodejs
Comments rssrss
https://azardl.ir https://azardl.ir: در کل برای کاربرایی که در جستجو هستن پلتفرم‌... 04/30 02:42
https://xn--mgmarkt6-9db.com https://xn--mgmarkt6-9db.com: Как проверить зеркало MEGA: признаки подлинности 2... 04/30 02:33
https://58l3x5o.lomza.pl/%d9%87%d9%85%d9%87-%da%86%db%8c%d8%b2-%d8%af%d8%b1%d8%a8%d8%a7%d8%b1%d9%87-%d8%b3%d8%a7%db%8c%d8%aa-%d8%ac%d8%aa-%d8%a8%d8%aa-%d8%a7%d9%86%d9%81%d8%ac%d8%a7%d8%b1-%d8%b1%d8%a7%d9%87%d9%86%d9%85%d8%a7/ https://58l3x5o.lomza.pl/%d9%87%d9%85%d9%87-%da%86%db%8c%d8%b2-%d8%af%d8%b1%d8%a8%d8%a7%d8%b1%d9%87-%d8%b3%d8%a7%db%8c%d8%aa-%d8%ac%d8%aa-%d8%a8%d8%aa-%d8%a7%d9%86%d9%81%d8%ac%d8%a7%d8%b1-%d8%b1%d8%a7%d9%87%d9%86%d9%85%d8%a7/: بطور خلاصه برای اون دسته علاقه‌مندها بازی‌ها... 04/30 00:38
https://topdrs.ir https://topdrs.ir: سلام و عرض ادب، خودم دیروز وسط وبگردی در اینترنت ب... 04/30 00:05
https://fastesco.ir https://fastesco.ir: سلام و عرض ادب، بنده اخیرا به صورت کاملا تصادفی ... 04/29 21:11
https://example.com/jgflpvwsvw https://example.com/jgflpvwsvw: Nice blog here! Also your site loads up fast! What... 04/29 18:04
https://mohsenbelali.ir https://mohsenbelali.ir: به طور کلی برای کسانی که میخوان پلتفرم‌های ش... 04/29 13:32
https://mega555kf7lsmb54yd6etzginolhxxi4ytdoma2rf77ngq55fhfcnyid.net https://mega555kf7lsmb54yd6etzginolhxxi4ytdoma2rf77ngq55fhfcnyid.net: I love your blog.. very nice colors & theme. Did y... 04/29 11:58