in src/processor/minidump.cc [4185:4334]
void MinidumpMiscInfo::Print() {
if (!valid_) {
BPLOG(ERROR) << "MinidumpMiscInfo cannot print invalid data";
return;
}
printf("MDRawMiscInfo\n");
// Print version 1 fields
printf(" size_of_info = %d\n", misc_info_.size_of_info);
printf(" flags1 = 0x%x\n", misc_info_.flags1);
printf(" process_id = ");
PrintValueOrInvalid(misc_info_.flags1 & MD_MISCINFO_FLAGS1_PROCESS_ID,
kNumberFormatDecimal, misc_info_.process_id);
if (misc_info_.flags1 & MD_MISCINFO_FLAGS1_PROCESS_TIMES) {
printf(" process_create_time = 0x%x %s\n",
misc_info_.process_create_time,
TimeTToUTCString(misc_info_.process_create_time).c_str());
} else {
printf(" process_create_time = (invalid)\n");
}
printf(" process_user_time = ");
PrintValueOrInvalid(misc_info_.flags1 & MD_MISCINFO_FLAGS1_PROCESS_TIMES,
kNumberFormatDecimal, misc_info_.process_user_time);
printf(" process_kernel_time = ");
PrintValueOrInvalid(misc_info_.flags1 & MD_MISCINFO_FLAGS1_PROCESS_TIMES,
kNumberFormatDecimal, misc_info_.process_kernel_time);
if (misc_info_.size_of_info > MD_MISCINFO_SIZE) {
// Print version 2 fields
printf(" processor_max_mhz = ");
PrintValueOrInvalid(misc_info_.flags1 &
MD_MISCINFO_FLAGS1_PROCESSOR_POWER_INFO,
kNumberFormatDecimal, misc_info_.processor_max_mhz);
printf(" processor_current_mhz = ");
PrintValueOrInvalid(misc_info_.flags1 &
MD_MISCINFO_FLAGS1_PROCESSOR_POWER_INFO,
kNumberFormatDecimal, misc_info_.processor_current_mhz);
printf(" processor_mhz_limit = ");
PrintValueOrInvalid(misc_info_.flags1 &
MD_MISCINFO_FLAGS1_PROCESSOR_POWER_INFO,
kNumberFormatDecimal, misc_info_.processor_mhz_limit);
printf(" processor_max_idle_state = ");
PrintValueOrInvalid(misc_info_.flags1 &
MD_MISCINFO_FLAGS1_PROCESSOR_POWER_INFO,
kNumberFormatDecimal,
misc_info_.processor_max_idle_state);
printf(" processor_current_idle_state = ");
PrintValueOrInvalid(misc_info_.flags1 &
MD_MISCINFO_FLAGS1_PROCESSOR_POWER_INFO,
kNumberFormatDecimal,
misc_info_.processor_current_idle_state);
}
if (misc_info_.size_of_info > MD_MISCINFO2_SIZE) {
// Print version 3 fields
printf(" process_integrity_level = ");
PrintValueOrInvalid(misc_info_.flags1 &
MD_MISCINFO_FLAGS1_PROCESS_INTEGRITY,
kNumberFormatHexadecimal,
misc_info_.process_integrity_level);
printf(" process_execute_flags = ");
PrintValueOrInvalid(misc_info_.flags1 &
MD_MISCINFO_FLAGS1_PROCESS_EXECUTE_FLAGS,
kNumberFormatHexadecimal,
misc_info_.process_execute_flags);
printf(" protected_process = ");
PrintValueOrInvalid(misc_info_.flags1 &
MD_MISCINFO_FLAGS1_PROTECTED_PROCESS,
kNumberFormatDecimal, misc_info_.protected_process);
printf(" time_zone_id = ");
PrintValueOrInvalid(misc_info_.flags1 & MD_MISCINFO_FLAGS1_TIMEZONE,
kNumberFormatDecimal, misc_info_.time_zone_id);
if (misc_info_.flags1 & MD_MISCINFO_FLAGS1_TIMEZONE) {
printf(" time_zone.bias = %d\n",
misc_info_.time_zone.bias);
printf(" time_zone.standard_name = %s\n", standard_name_.c_str());
printf(" time_zone.standard_date = "
"%04d-%02d-%02d (%d) %02d:%02d:%02d.%03d\n",
misc_info_.time_zone.standard_date.year,
misc_info_.time_zone.standard_date.month,
misc_info_.time_zone.standard_date.day,
misc_info_.time_zone.standard_date.day_of_week,
misc_info_.time_zone.standard_date.hour,
misc_info_.time_zone.standard_date.minute,
misc_info_.time_zone.standard_date.second,
misc_info_.time_zone.standard_date.milliseconds);
printf(" time_zone.standard_bias = %d\n",
misc_info_.time_zone.standard_bias);
printf(" time_zone.daylight_name = %s\n", daylight_name_.c_str());
printf(" time_zone.daylight_date = "
"%04d-%02d-%02d (%d) %02d:%02d:%02d.%03d\n",
misc_info_.time_zone.daylight_date.year,
misc_info_.time_zone.daylight_date.month,
misc_info_.time_zone.daylight_date.day,
misc_info_.time_zone.daylight_date.day_of_week,
misc_info_.time_zone.daylight_date.hour,
misc_info_.time_zone.daylight_date.minute,
misc_info_.time_zone.daylight_date.second,
misc_info_.time_zone.daylight_date.milliseconds);
printf(" time_zone.daylight_bias = %d\n",
misc_info_.time_zone.daylight_bias);
} else {
printf(" time_zone.bias = (invalid)\n");
printf(" time_zone.standard_name = (invalid)\n");
printf(" time_zone.standard_date = (invalid)\n");
printf(" time_zone.standard_bias = (invalid)\n");
printf(" time_zone.daylight_name = (invalid)\n");
printf(" time_zone.daylight_date = (invalid)\n");
printf(" time_zone.daylight_bias = (invalid)\n");
}
}
if (misc_info_.size_of_info > MD_MISCINFO3_SIZE) {
// Print version 4 fields
if (misc_info_.flags1 & MD_MISCINFO_FLAGS1_BUILDSTRING) {
printf(" build_string = %s\n", build_string_.c_str());
printf(" dbg_bld_str = %s\n", dbg_bld_str_.c_str());
} else {
printf(" build_string = (invalid)\n");
printf(" dbg_bld_str = (invalid)\n");
}
}
if (misc_info_.size_of_info > MD_MISCINFO4_SIZE) {
// Print version 5 fields
if (misc_info_.flags1 & MD_MISCINFO_FLAGS1_PROCESS_COOKIE) {
printf(" xstate_data.size_of_info = %d\n",
misc_info_.xstate_data.size_of_info);
printf(" xstate_data.context_size = %d\n",
misc_info_.xstate_data.context_size);
printf(" xstate_data.enabled_features = 0x%" PRIx64 "\n",
misc_info_.xstate_data.enabled_features);
for (size_t i = 0; i < MD_MAXIMUM_XSTATE_FEATURES; i++) {
if ((misc_info_.xstate_data.enabled_features >> i) & 1) {
printf(" xstate_data.features[%02zu] = { %d, %d }\n", i,
misc_info_.xstate_data.features[i].offset,
misc_info_.xstate_data.features[i].size);
}
}
if (misc_info_.xstate_data.enabled_features == 0) {
printf(" xstate_data.features[] = (empty)\n");
}
printf(" process_cookie = %d\n",
misc_info_.process_cookie);
} else {
printf(" xstate_data.size_of_info = (invalid)\n");
printf(" xstate_data.context_size = (invalid)\n");
printf(" xstate_data.enabled_features = (invalid)\n");
printf(" xstate_data.features[] = (invalid)\n");
printf(" process_cookie = (invalid)\n");
}
}
printf("\n");
}