2013-04-25 108 views
0

我试图将软件移植到微控制器(所以我不能通过例如gdb代码),它崩溃不愉快。 为了找出原因,我想在每个语句前插入一个printf(),以回应所述语句,例如,printf调试跟踪功能

void foo(int c) { 
    bar(); 
    for(int i=0; i<c; ++c) { 
     baz(i); 
    } 
    very_long_function(&with, &arguments, \ 
         on->several(lines)); 
} 

将成为

void foo(int c) { 
    printf("bar();\n"); 
    bar(); 
    printf("for(int i=0; i<c; ++c)\n"); 
    for(int i=0; i<c; ++c) { 
     printf("baz(i)\n"); 
     baz(i); 
    } 
    printf("very_long_function(&with, &arguments, \ 
         on->several(lines));\n"); 
    very_long_function(&with, &arguments, \ 
         on->several(lines)); 
} 

是否已有一些脚本来做到这一点?

+0

确保您不要在没有{} s的块中添加一行,就像1行for循环一样。 – 2013-04-25 19:29:09

回答

1

它仍然需要建立公平一点,但你可以通过定义打印文件/行宏和点睛,通过你的代码追踪崩溃少一点痛苦的位置

#define FL printf("File %s, line %u\n", __FILE__, __LINE__); 

void foo(int c) { 
FL bar(); 
FL for(int i=0; i<c; ++c) { 
FL  baz(i); 
    } 
FL very_long_function(&with, &arguments, \ 
         on->several(lines)); 
FL}