【问题标题】:printf debugging to trace a functionprintf 调试跟踪函数
【发布时间】:2013-04-25 13:41:55
【问题描述】:

我正在尝试将软件移植到微控制器(因此我无法使用 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 行 for 循环。

标签: c printf-debugging


【解决方案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}

【讨论】:

    猜你喜欢
    • 2016-10-15
    • 2018-10-26
    • 1970-01-01
    • 1970-01-01
    • 2014-05-23
    • 1970-01-01
    • 1970-01-01
    • 2020-08-22
    • 1970-01-01
    相关资源
    最近更新 更多