1

C言語で書かれたターゲットプログラムを実行後、実行文の並びを取得したいのですが、方法がわかりません。実行時に実行されたステートメントのシーケンスを取得する必要はありません。それを行う方法はありますか?参考までに、gcov がステートメント カバレッジをレポートすることは知っていますが、私の知る限り、ターゲット プログラムで実行されたステートメントのシーケンスはレポートしません (ターゲット プログラムのソース コードでのみ実行されたステートメントのシーケンスを取得したい)。Linuxでgccコンパイラを使用してCプログラムを実行しています:)

明確に理解するには、次の例を参照してください。

次のプログラムを実行すると、実行されたステートメントのシーケンスを次のように取得したいと考えています。

1: int main()
2: {
3:    int a  = 10;
4:    printf("hello");
5:    if( a == 10){
6:       printf("a == 0");
7:    }else{
8:       printf("a != 0");}
9:    return 0;
10: }

取得したい出力は次のとおりです: 34569 (トレースしたいターゲット プログラムは 1 行に 1 つのステートメントしかないため、出力としての行番号のシーケンスで十分です)

この質問は数時間前に他の人に尋ねられましたが (質問を参照)、明確な回答が得られずに数人の読者によってクローズされました。よく知られている解決策があれば教えてください。

4

1 に答える 1

0

LINEプリプロセッサ マクロを使用して行番号を取得できます。

printf("%d", __LINE__);各行の後に追加するだけです

于 2012-12-27T07:08:13.800 に答える