我正在尝试将软件移植到微 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/