
C言語であるプログラムを作っています。コンパイルは上手くできるのですが、実行するとセグメンテーション違反と出てしまいます。それもセグメンテーション違反と出るときと出ないときがあり困っています。そこでプログラム中のどこがセグメンテーション違反を指しているのか知りたいのですが、何かセグメンテーション違反の場所を教えてくれるようなオプションはないでしょうか? プログラムソースを見てもらうのが一番いいと思いますが、行数が1000行を超えているので断念しました。OSはLinuxでコンパイラはgccです。どなたかご教授お願いします。
No.3
- 回答日時:
gdb core
で、検索してみてください。
どこの関数で、coreファイルが吐かれたかまで、
おおよその範囲で終えます。
参考URLに、まさに今回の件に該当する内容が
記述されています。
Solaris だと、pstack コマンド。
参考URL:http://www-or.amp.i.kyoto-u.ac.jp/algo-eng/db/de …
回答ありがとうございます。coreを吐かせて原因をさぐってみようと思います。参考URLも活用させていただきます。ありがとうございました。
No.1
- 回答日時:
巨大な配列を使っていませんか?
配列のサイズが大きすぎると、個々のユーザに割り当てられた
スタックのサイズを超えてしまい、segmentation faultになります。
配列のサイズを小さくしてコンパイル→実行してみて、
うまくいくか確認してみてください。
うまくいくようなら、シェルのプロンプトから
ulimit -s unlimited
と打ち込んでから(スタックサイズを無制限にするコマンドです)
再度コンパイル→実行してみてください。
早速の回答ありがとうございます。配列はint tekitou [2000]を6回ぐらい宣言していました。そこで配列のサイズを半分の1000にしてみたんですが、セグメンテーション違反とでてしまいました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
<unistd.h>をVisualStudioでつ...
-
すべてのリビルド: 0 正常、 0 ...
-
アプリケーションのDLLファイル...
-
C言語で、配列を使ったsinカー...
-
MVSマシンで0C7でABENDしたので...
-
boostを利用したプログラムのコ...
-
コンパイル言語とインタープリ...
-
gcc バージョン違いによるコン...
-
math.hに含まれる関数が使えない
-
#If True Then の # って何??
-
サクラエディタとコンパイラ
-
VS2010環境で2点ほど質問
-
ビープ音が鳴りません・・・
-
Verilog_HDLでのdefineとifdef
-
[COBOL] ソースの復帰
-
define文のパラメータを実行時...
-
Cのコンパイルでコメントアウト...
-
不明なプラグマ・・・?
-
LSI C-86試食版のコンパイルエ...
-
グラフィックス
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
<unistd.h>をVisualStudioでつ...
-
アプリケーションのDLLファイル...
-
実行後にコンパイルに失敗しま...
-
math.hに含まれる関数が使えない
-
c言語です コンパイルした時に...
-
共有ライブラリの内容確認について
-
すべてのリビルド: 0 正常、 0 ...
-
ビープ音が鳴りません・・・
-
C#で char型とstring型の比較で...
-
[COBOL] ソースの復帰
-
ヘッダーファイル『windows.h』...
-
シリアル通信の受信待ちについて
-
自作DLLの中身を暗号化
-
64ビットのlinuxで32ビットメモ...
-
gcc バージョン違いによるコン...
-
Cのコンパイルでコメントアウト...
-
プレコンパイルの意味を教えて...
-
gccでc++プログラムをコンパイ...
-
VBで作成したOCXでバージョンが...
-
VS2010環境で2点ほど質問
おすすめ情報