2012-01-04 6 views
1

私はLinuxで動作するプログラムを持っています。それは不思議なことにクラッシュしています。私はすでにGDBを使用することがどこでクラッシュするかを知る方法を知っています。しかし、私はそれを再起動するたびに(私はそれをテストしているので、これは多くを行う)毎回それに添付したくないです。これを行う別の方法がありますか?どのようにLinuxのプログラムがクラッシュするのか知るには?

答えて

5

まず使用ulimit -c unlimited

プログラムがクラッシュした後、プログラムがマルチスレッドの場合はcore、またはcore.<pid>というコアダンプファイルが見つかります。

あなたはgdb program coreでクラッシュの時点での状態を調べるためにGDBにこれをロードすることができます。

3

あなたは、コアファイル、プログラムがクラッシュした任意の時間をダンプするために、あなたのOSを構成することができます。その後、コアを調べてクラッシュの場所を特定することができます。

4

まずulimit -c unlimitedを行うので、プログラムがコアダンプを残します。 その後、それがクラッシュしたときに、クラッシュの瞬間にプログラムの 状態を読み取るために、コア・ダンプをgdbを呼び出します。クラッシュしたプログラムがコアダンプを書き込むことができるようにする

+0

はい:ここ

は、GDBに素敵なクイックガイドです。私の部分のタイプミス。私はそれを修正します。 –

2

- >有効GDBフラグを使用してコードをコンパイルします。

GCC <バイナリ名-o> -g < FILE.C>

(これは、C/C++プログラムであると仮定) - >実行withingのGDBを実行します。 gdb <バイナリ名>

この後、クラッシュの場所を見つける方法があります: 1.段階的実行。 2.コードを実行し、(期待どおりに)クラッシュし、gdb内に「どこで」(引用符なし)と入力してバックトレースを指定します。それから、アドレスを見つけることができます。 http://www.cs.cmu.edu/~gilpin/tutorial/

関連する問題