2010-11-26 6 views
0

私はプログラムをcで書きましたが、そのログファイルを作成しようとしています。ログファイルのcでのデバッグ

私が直面している問題は、ファイル内の各行の出力を印刷する際に、その行の実行時間やコード内の行番号などのいくつかの特徴を書きたいということです。

これらの2つのうちいずれかを知る方法はありますか。

他にも特徴的な機能を提案しても差し支えありません。私が望むのは、ユーザーがコードの特定の部分が実行されていることを知るログファイルを見ているだけです。

おかげ


は、私は、Linux上で作業し、したがって、GCCコンパイラを使用しています....

私は、ヘッダファイルを作って、それに私が__LINE__を書いてテスト目的のためにしています。私がしたいのは、プログラムでヘッダーファイルのこの関数をインクルードするときに、行番号が関数のどこに表示されるかということです。しかし、代わりに私はヘッダーファイルprintfステートメントの行番号を取得します。

ファイルの行番号を取得するには何が必要ですか? これは、下記の単なるテスト形式です: - ....その後

new.h 
     void print() 
     { 
      printf("Line number is %d",__LINE__); 
     } 

actual file 
     #include "new.h" 
     int main() 
     { 
      print(); 
     } 

は私が印刷される行数は、実際のファイルのことであり、今起こっているnew.hないことをしたい

答えて

2

ほとんどのCコンパイラでは、各行や関数などを識別するためのマクロが用意されています。たとえば、GCCでは__LINE____FUNCTION__などを使用できます。詳細については、コンパイラーのマニュアルを参照してください。タイムスタンプを取得するには、作業しているシステムをお知らせください。

+0

もう少しお手伝いできますか?私は行番号を印刷しているヘッダファイルを持っています。しかし、私が得る問題は、私が走っている他のファイルの行番号を出力したいということです。これを行う方法.... –

+0

これのためのマクロを書く。例えば。 #define print()printf( "行番号は%d"、__ LINE__) – JustSid

+0

これは実際のファイルに記述する必要があると思いますが、それは嫌です。誰かが私のプログラムを実行すると、行番号の値が表示され、自分自身にマクロを含める必要があることを願っています....ありがとうございます... –

2

関数が実際に実行された日時が必要な場合は、asctime()を試してください。それがどのように行われたかについての良い参考文献がありますhere

これはSat May 20 17:36:17 2000に類似したものを出力します。プログラムを開始してからの時間を秒単位で指定したい場合は、int startTime = time()などの変数を使用して、Unixエポックからプログラムの開始時間を秒単位で保持します。次に、プログラムの開始からの秒数を得るには、単にstartTime - time()を印刷します。

+0

こんにちは...私はロギング目的では、自分のプログラム自体が役に立たないと思います。だから、コードが最初に実行された違いを教えてもらえません....間違っていれば訂正してください:) –

+0

SDLを使っていたなら、 'SDL_GetTicks()'を使ってミリ秒単位で時間を得ることができますあなたがそれを言及していないためにそれを使用していることを疑う。申し訳ありませんが私はより多くの助けになることはできません!また、他のアンサーポスターには、 '__FILE__'と' __LINE__'キーワードのおかげで、とても役に立ちました! – Bojangles

+0

問題ありません! SOコミュニティはいつも助けに来ています! – Bojangles

0

__FILE____LINE__を使用して、現在のファイルと行番号を取得します。

編集:編集した質問に基づいています。これは簡単な方法で始めることができます。 GCCで

new.h

#define PRINT() print(__LINE__) 

void print(int line) 
{ 
    printf("Line number is %d",line); 
} 

実際のファイル

#include "new.h" 
    int main() 
    { 
     PRINT(); 
    } 
+0

もう少しお手伝いできますか? ..私は行番号を印刷しているヘッダファイルを持っています。しかし、私が得る問題は、私が走っている他のファイルの行番号を出力したいということです。これを行う方法.... –

+0

#defineを使用して、 '__LINE__'を使用するマクロを作成します。 '__LINE__'は.hではなく.cの行になります。 .hの中で関数の中で '__LINE__'を使うと、.hの行番号になります。私が誤解している場合は、コードを投稿してください。 –

+0

私がやった編集の実装方法を教えてもらえますか?ありがとうございました.... –

0

あなたは "__LINE__" として行番号を取得することができます。ファイル名 - "__FILE__"

実行時間を計算したい場合は、開始時に時間を覚えて、終了時に時間を取得し、それらを減算します。

0

プリプロセッサマクロ__LINE__で行番号を取得できます。ファイルは__FILE__です。時間に関しては、関連するOSライブラリを使用してください。

または、これらをサポートするロギングライブラリを使用してください。

関連する問題