2017-06-05 7 views
1

私は通常、GDB(LinuxではQt CreatorデバッガGUI)を使用してデバッグします。しかし、今私は、デバッガの下で実行しているときに起こることを拒否するクラッシュを持っていますが、それを外に実行すると簡単に起こります。デバッガでアプリケーションを実行せずにクラッシュするためにstacktraceを取得

このような状況でクラッシュのスタックトレースを取得するにはどうすればよいですか?

Linux固有の解決策は問題ありません。

注:デバッグビルドは、デバッガの外で実行されている場合でも実行しています。

+0

1)gdbでコアダンプをデバッグしようとしました2)gdbでaslrを有効にしてください(デフォルトではオフ) – ks1322

+1

@ ks1322:ありがとうございました。 –

+0

'duplicate'の質問は、スタックトレースをプログラムで出力するように思えます。これはコアファイルでGDBを使用する方法の詳細です。再投票する投票。 –

答えて

3

あなたがクラッシュした後にスタックトレースを取得することができますしてくださいする最も簡単な方法は、プログラムを起動する前にシェルで

ulimit -c unlimited 

を実行することです。 これは、プログラムがクラッシュすると、カーネルが無制限のサイズのコアダンプを生成することを許可します(多くのディストリビューションでは、デフォルトサイズは0です)。コアファイルは、その後gdb programfile corefileとしてGDBにロードすることができ、その後、コマンドthread apply all btはあなたが(あなたが唯一のクラッシュのスレッドを心配している場合だけbtを使用)、その特定のクラッシュのためにすべてのスレッドのスタックトレースを与えること

pstackプログラムを使用して、実行中のプログラムからスタックトレースを取得することもできます。

+0

どのように回答を投稿できましたか?あなたの答えが現れる前に私は私のことを書いていました。そして、突然質問が閉じられました。 FWIW、私はあなたの答えで利用できないいくつかの情報を持っていた。 –

+0

@ErikAlapää質問が終わった直前に私は私のものを提出したと思うが、あなたはそうしなかった... –

+0

Probaby so;)とにかく、これらのSO警察官が関係する質問を閉じるのはちょっと迷惑だ。私はほとんど重複が存在することに気をつけません。しばしば、新しい答えが得られるような些細な違いや新しい開発があります。 –

関連する問題