出于调试目的,我发现显示数据结构的内容很有用。 (例如,在Python中,我只是“打印some_dict_name”)。
这可以通过使用标准库在C中实现,或者我是否必须根据数据结构自行实现?
考虑以下代码,我必须再次遍历StructArray以显示其所有内容。
#include <stdio.h>
struct SomeStruct {
int id;
};
int main() {
struct SomeStruct StructArray[10];
int x = 0;
for (x = 0; x < 10; x++) {
StructArray[x].id = x;
}
for (x = 0; x < 10; x++) {
printf("StructArray[%d].id = %d\n", x, StructArray[x].id);
}
return 0;
}
答案 0 :(得分:8)
您需要根据数据类型自行实施 C没有类型系统,您可以动态或静态地访问每种类型的每个部分。
如果您正在使用像gdb这样的东西进行实时调试,它的智能足以读取调试信息和打印类型内容。但是你不能从程序本身那里做到这一点,没有对C类型进行内省的事情。
答案 1 :(得分:1)
一种真正的hackish方式是使用调试信息编译程序,并在程序中构建一个调试库,以便在运行时从程序本身读取调试信息。解析应该从中解析的内容,并相应地打印结构。
这是一个独立的项目。
答案 2 :(得分:0)
或者,您可以使用类似DDD的数据显示调试器。