diff --git a/epan/dissectors/packet-frame.c b/epan/dissectors/packet-frame.c index 292173c2e5..52592d54ff 100644 --- a/epan/dissectors/packet-frame.c +++ b/epan/dissectors/packet-frame.c @@ -680,11 +680,12 @@ dissect_frame(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree, void* if (!(decoded[byte] & (1 << bit))) { field_info* fi = proto_find_field_from_offset(tree, i, tvb); if (fi && fi->hfinfo->id != proto_frame) { - g_log(LOG_DOMAIN_CAPTURE, G_LOG_LEVEL_WARNING, - "Dissector %s incomplete in frame %u: undecoded byte number %u " - "(0x%.4X+%u)", - (fi ? fi->hfinfo->abbrev : "[unknown]"), - pinfo->num, i, i - i % 16, i % 16); + if (prefs.incomplete_dissectors_check_debug) + g_log(LOG_DOMAIN_CAPTURE, G_LOG_LEVEL_WARNING, + "Dissector %s incomplete in frame %u: undecoded byte number %u " + "(0x%.4X+%u)", + (fi ? fi->hfinfo->abbrev : "[unknown]"), + pinfo->num, i, i - i % 16, i % 16); proto_tree_add_expert_format(tree, pinfo, &ei_incomplete, tvb, i, 1, "Undecoded byte number: %u (0x%.4X+%u)", i, i - i % 16, i % 16); } } diff --git a/epan/prefs.c b/epan/prefs.c index 34bcd1fe7b..3f1677115a 100644 --- a/epan/prefs.c +++ b/epan/prefs.c @@ -2518,6 +2518,11 @@ prefs_register_modules(void) prefs_register_uint_custom_preference(console_module, "log.level", "logging level", "A bitmask of GLib log levels", &custom_cbs, &prefs.console_log_level); + prefs_register_bool_preference(console_module, "incomplete_dissectors_check_debug", + "Print debug line for incomplete dissectors", + "Look for dissectors that left some bytes undecoded (debug)", + &prefs.incomplete_dissectors_check_debug); + /* Capture * These are preferences that can be read/written using the * preference module API. These preferences still use their own diff --git a/epan/prefs.h b/epan/prefs.h index 095a2ce873..f18cf85f1d 100644 --- a/epan/prefs.h +++ b/epan/prefs.h @@ -215,6 +215,7 @@ typedef struct _e_prefs { gboolean display_hidden_proto_items; gboolean display_byte_fields_with_spaces; gboolean enable_incomplete_dissectors_check; + gboolean incomplete_dissectors_check_debug; gpointer filter_expressions;/* Actually points to &head */ gboolean gui_update_enabled; software_update_channel_e gui_update_channel;