アプリ版:「スタンプのみでお礼する」機能のリリースについて

学校の課題でデバッグを使ってプログラムのエラーを取り除くものが出されました。
Cygwinを使ってデバッグ(gdb)をしたのですが、エラーの場所が表示されません。
プログラムは1つ目のデータと2つ目のデータを比較するプログラムです。(スペルチェッカー)
dic1とtext1には両方xという文字が入っています。

(gdb) run dic1 text1
Starting program: /home/*****/a.exe dic1 text1
[New Thread 16764.0x4180]
[New Thread 16764.0x43b0]

Program received signal SIGSEGV, Segmentation fault.
0x6113a4b7 in getc () from /usr/bin/cygwin1.dll


何行目が違うのか出てきません。(学校ではCygwinを使ってやったわけではないのですが、行番号が出てきました。)
原因がわかりません。
詳しい方よろしくお願いします。

A 回答 (3件)

>コマンドライン引数でファイル名を指定しているのに、getc()で標準入力使おうとしているのは疑問だったりしますが。



リファレンスちゃんと見ないとダメですな。
ファイルストリームからの読み込みでしたのでgetc()を使う事自体は問題ないです。

デバッグ情報については、「gcc gdb デバッグ情報」辺りで検索すれば、
http://rat.cis.k.hosei.ac.jp/article/devel/debug …
とか見つかるでしょう。
    • good
    • 0

デバッグ情報を付けてコンパイルしてる?

    • good
    • 0

cygwinでgdb使った事はありませんが。



> 何行目が違うのか出てきません。

デバッグ情報付きでビルドしましたか?

> Program received signal SIGSEGV, Segmentation fault.
> 0x6113a4b7 in getc () from /usr/bin/cygwin1.dll

getc()でセグメンテーションフォルトが発生している。
って言われてますが。
コマンドライン引数でファイル名を指定しているのに、getc()で標準入力使おうとしているのは疑問だったりしますが。

あとはソースでも掲示されないと…ですかね。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!