2011-10-12 2 views
7

ARM9ボード上で、フラッシュメモリの合計サイズが180MBの組み込みアプリケーションを実行しています。私はgdbを実行することが、私はGDBを使用してコアダンプファイルを生成する際のコアダンプファイルのサイズを制限する方法

(gdb) generate-core-dump

を行うとき、私は私もulimit -c 50000を設定するが、それでもコア・ダンプがこの制限を超える

warning: Memory read failed for corefile section, 1048576 bytes at 0x4156c000. 
warning: Memory read failed for corefile section, 1048576 bytes at 0x50c00000. 
Saved corefile core.5546 
The program is running. Quit anyway (and detach it)? (y or n) [answered Y; input not from terminal] 
Tamper Detected 
**********OUTSIDE ifelse 0********* 
length validation is failed 

エラーが発生します。ファイルサイズを確認するのにls -lを実行すると、300 MB以上になります。この場合、コアダンプのサイズをどのように制限すればよいですか?

答えて

8

GDBは 'ulimit -c'を尊重しません。カーネルだけが行います。

GDBをターゲットボード上で実行するのか、開発ホスト上で実行するのか(そしてターゲット上でgdbserverを使用するのか)は明らかではありません。おそらく後者を使用して、完全なコアダンプを収集することができます。

問題をデバッグするのに必要な情報が正確に含まれていないため、切り捨てられたコアダンプはとにかく苦労します。お使いのシェルのrcファイルで

+0

ターゲットボード上でgdbを実行しています。私もgdbserverを使うことができますが、クラッシュが容易に再現できないので、最初のオプションを使うつもりです。 –

+1

申し訳ありませんが、gdbやgdbserverをクラッシュを簡単に再現可能とするために実行する方法がわかりません。 – shodanex

+0

@ shodanex - クライアント/サーバモデルを使用して、コアファイルはコアファイル用に180MBの空き領域しか持たない組み込みシステムではなく、「ホスト」ファイルシステムで収集できます。おそらく、ホストシステムにはフルHDDが搭載されており、より大きなコアファイルを保存することができます。 – Peter

0

いつulimit -cを使用しましたか?コアダンプを生成するプログラムを起動する前に、同じセッション内で使用する必要があります。

+0

GDBを実行する前にulimitを設定していました。私は 'ulimit -c 50000'を/etc/rc.d/init.d/startupに入れて、 'ulimit -a'を使って手動でチェックし、正しく設定されています。 –

4

limit coredumpsize 50000    # or whatever limit size you like 

GDB

を含め、すべての制限を設定する必要があります注:0に設定すると

、あなたは確認することができますホームディレクトリにコアダンプファイルが混在することはありません。

関連する問題