Q
gccでデバッグ
-3
A
答えて
1
gcc
は、エラーが発生した(おおよその)ラインと位置をプリントアウトし、そのファイルになります。
ただし、いいえ、gcc
はコードを繰り返しません。ファイルを開いてその行に移動する必要があります。
通常、統合開発環境では、gcc
出力のエラー参照をクリックして、その行に直接移動することができます。これは(少なくとも)Eclipse、Anjuta、Emacsに当てはまります。
(常に-Wextra
を使用)
+0
+1に '-Wextra'を+1しました。しかし、もしあなたが従来のコードを扱っているなら、 '-Wno-sign-compare'でいくつかの警告を抑制する必要があるでしょう。また、 '-Wshadow'を追加すると、私は多くの愚かな間違いから私を救ってくれました。 –
2
gcc
診断の形式は、行番号と診断メッセージです。問題のコードは表示されません。
より表現力豊かな診断が必要な場合は、clang
コンパイラを試すことができます。 clang
診断の形式は、行番号、列番号、診断メッセージ、問題のある箇所を示すマークアップ付きの問題コードの貼り付けです。例えば
、printf文の後に行方不明セミコロンでこのコードを与えられる:ここ
#include <stdio.h>
int main(void)
{
int a = 42;
printf("%d\n", a)
return 0;
}
はgcc
とclang
との間の診断メッセージの差である:
$ gcc -Wall tst.c
tst.c: In function ‘main’:
tst.c:9: error: expected ‘;’ before ‘return’
$ clang -Wall tst.c
tst.c:7:22: error: expected ';' after expression
printf("%d\n", a)
^
;
1 diagnostic generated.
$
はい、場合あなたは構文エラーがあります。あなたのコードはコンパイルされません。もちろん、構文エラーを引き起こさないミスをする方法はたくさんあります。 –
私はあなたの質問をどのように解釈しましたか?潜在的なエラーのあるCプログラムをコンパイルしたいとします。コンパイルして何が起こるのを見てみませんか?編集:ちょうどあなたが知っているので、gccは、エラーが存在する行を与えます。 – itdoesntwork
私は別の質問を@itdoesntwork ...と解釈しました。「違反コードを見ることはできますか?」 – BRFennPocock