c - printf 调试以跟踪函数

标签 c printf-debugging

我正在尝试将软件移植到微 Controller (因此我无法使用 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));
}

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

最佳答案

它仍然需要相当多的设置,但是您可以通过定义一个打印文件/行的宏并在您的代码中点缀来减少跟踪崩溃位置的痛苦

#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}

关于c - printf 调试以跟踪函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16216381/

相关文章:

c - 教育示例表明有时 printf 作为调试可能会隐藏错误

debugging - 通过添加 'print' 语句进行调试的正确名称是什么

c - 在 C 中保存增量

c - MIPS 字符串存储

c - 在 C 中返回二维字符数组

c++ - 在 Eclipse 中为 C 项目处理不同的构建场景

c - IF 语句中的两个条件(C 语言)

debugging - 如何使用 printfs 读取 "debug"Haskell?

c - 类型重载宏

C 编程 : seg faults, printf 和相关问题