2013-04-25 116 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}