2017-01-31 7 views
2

実行時にCコードでソースコード行番号を取得する方法はありますか? その背後にある考え方は、ソフトウェアが単純なC言語で作られているとします。 .exeファイルはCについて何も知らないユーザーに配布されます。エラーが発生した場合、行番号を確認して製造元にエラーを報告することで、製造元でデバッグを行うことができます。私は実行時エラーをデバッグし、実行中にソースコード内の対応する行番号を取得するだけです。私はこれらのものの初心者です。実行時にCコードでソースコード行番号を取得する方法はありますか?

+0

はありませんか? –

+0

これはあなたの特定の質問に答えるダップです。しかし、最初のコメントで指摘されているように、より良いデバッグ方法はデバッガを使用することです。 – kaylum

+0

実行時に行番号を尋ねています。説明していただけますか?私はコーディングの初心者です –

答えて

2

代わりにgdbを使用してください。しかし、私はそれが動作します推測:それはデバッグシンボルでコンパイルし、gdbのようなデバッガでコードを実行するために十分

if(someThingsWrong()) 
    printf("wrong at line number %d in file %s\n", __LINE__, __FILE__); 
3

GCCコンパイラを使用している場合は、標準定義済みマクロ - __LINE__を行番号のプレースホルダとして使用できます。

コンパイル時にコンパイラが行番号を入力します。

例: -

printf("%d",__LINE__);

+1

'__LINE__'マクロはGCCに固有のものではありません。 –

2

あなたは、常に現在のファイル名と行番号に展開する組み込みマクロ__LINE____FILE__を、使用することができます。

#include <stdio.h> 

int main(int argc, char *argv[]) 
{ 
    if(argc<2) 
    { 
     printf("Error: invalid arguments (%s:%d)\n", __FILE__, __LINE__); 
     return 0; 
    } 
    printf("You said: %s\n", argv[1]); 
    return 0; 
} 
+1

'__FILE__'と' __LINE__'は他にも実際には必須のマクロです。 C11§6.10.8.1を参照のこと。 –

関連する問題