我试图在执行程序之后用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),但有几位读者没有明确答案就关闭了。 如果它有众所周知的解决方案,请告诉我。
答案 0 :(得分:0)
您可以使用 LINE 预处理器宏来获取行号
只需在每行后添加printf("%d", __LINE__);