借助于下面提供的程序可以分析core 文件的部分信息:
#include
#include
void main(int argc, char *argv[])
{
FILE *corefile;
struct core_dumpx c_file;
char command[256];
if (argc != 2) {
fprintf(stderr, "Usage: %s /n", *argv);
exit(1);
}
if ((corefile = fopen(argv[1], "r")) == NULL) {
perror(argv[1]);
exit(1);
}
fread(&c_file, sizeof(c_file), 1, corefile);
fclose(corefile);
sprintf(command, "lquerypv -h %s 6E0 64 | head -1 | awk '{print $6}'", argv[1]);
printf("Core created by: /n");
system(command);
printf("Signal number and cause of error number: %i/n", c_file.c_signo);
printf("Core file type: %i/n", c_file.c_flag);
printf("Number of core dump modules: %i/n", c_file.c_entries);
printf("Core file format number: %i/n", c_file.c_version);
printf("Thread identifier: %i/n", c_file.c_flt.th.ti_tid);
printf("Process identifier: %i/n", c_file.c_flt.th.ti_pid);
printf("Current effective priority: %i/n", c_file.c_flt.th.ti_pri);
printf("Processor Usage: %i/n", c_file.c_flt.th.ti_cpu);
printf("Processor bound to: cpu%i/n", c_file.c_flt.th.ti_cpuid);
/* if (c_file.c_flt.th.ti_cpu > 1) printf("Last Processor: cpu%i/n", c_file.c_flt.th.ti_affinity);
*/
exit(0);
}
假定以上程序的可执行程序名称为anacore ,按照以下步骤察看其运行结果:
1 ) 通过下面的程序生成core 文件