2017-10-10 8 views
0

大きなネットワーク上にコードがあり、ここに貼り付けることができません。gdbで起動するとプロセスダンプが発生する

私の問題は、私がgdbで起動すると、プロセスが開始されるとすぐにseg faultが表示されることです。しかし、gdbなしで実行すると、実行され続けていて、いくつかのランダムな時間に障害が発生します。理由は何でしょうか?確かにいくつかのメモリ破損はありますか?

+0

コードを投稿に追加してください。エラーが発生した場所を見つけようとしましたか? – moooeeeep

+0

考えられる理由:マルチスレッドアプリケーションで作業していて、スレッド間の同期が悪い場合は、最初にバックトレースを使用して問題をデバッグし、次に「休憩」を使用していくつかの手順を遅らせることで、誰がsegを引き起こしているのか確かめてください。 – Mouin

+0

'valgrind'で同じコードを実行しようとしましたか? – dlmeetei

答えて

0

GDB内でプロセスがすぐにクラッシュする理由の1つは、GDBがアドレス空間のランダム化を無効にすることです。ASLR

setarch x86_64 -R ./a.out ... 

またはあなたがそうのような広いASLRシステムを無効にすることができます:

(gdb) set disable-randomization off 
(gdb) run 

あなたがそうのようなGDBの外でASLRを無効にすることができます

あなたはそうのようにgdbでASLRを再度有効にすることができます

sudo -c "echo 0 > /proc/sys/kernel/randomize_va_space" 

いくつかのメモリ破損がありますかe?

確かにどこかにバグがあります。メモリ破損かその他のバグかどうかは、正確にはに依存します。ここでは、プロセスがクラッシュし、関連する詳細は教えていません。

関連する問題