1

我试图在执行程序在用 C 编写的目标程序中获取执行语句的序列,但我找不到方法。我不需要在运行时获取执行语句的序列。有没有办法做到这一点?仅供参考,我知道 gcov 报告语句覆盖率,但据我所知,它不报告目标程序中执行语句的序列(我只想在目标程序源代码中获取执行语句的序列)。我正在使用 gcc 编译器在 Linux 中运行 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 (由于我要跟踪的目标程序在一行上只有一个语句,所以作为输出的行号序列对我来说就足够了)

几个小时前有人向其他人提出了这个问题(请参阅问题),但没有明确答案的一些读者将其关闭。如果它有众所周知的解决方案,请告诉我。

4

1 回答 1

0

您可以使用LINE预处理器宏来获取行号,

只需printf("%d", __LINE__);在每行之后添加

于 2012-12-27T07:08:13.800 回答