printf调试跟踪一个函数

时间:2013-04-25 13:41:55

标签: c printf-debugging

我正在尝试将软件移植到微控制器(因此我无法通过例如gdb单步执行代码)并且它会令人不快地崩溃。 为了找出原因,我想在每个语句之前插入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));
}

是否已有一些脚本可以执行此操作?

1 个答案:

答案 0 :(得分: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}