我正在尝试将软件移植到微控制器(因此我无法通过例如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));
}
是否已有一些脚本可以执行此操作?
答案 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}