有没有办法在目标C程序中获取执行语句的序列?

时间:2012-12-27 06:27:53

标签: c sequence trace

我试图在执行程序之后用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 (因为我想跟踪的目标程序在一行上只有一个语句, 输出的行号的序列对我来说足够了)

几个小时前,这个问题被其他人问过(参见question),但有几位读者没有明确答案就关闭了。 如果它有众所周知的解决方案,请告诉我。

1 个答案:

答案 0 :(得分:0)

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

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