debugutils: Truncate parameter values that are too long

This removes some information from the dumps, but improves readability.

https://bugzilla.gnome.org/show_bug.cgi?id=739165
This commit is contained in:
Arun Raghavan 2014-10-25 17:16:25 +05:30 committed by Arun Raghavan
parent 537384898f
commit e4d6896d0c
2 changed files with 37 additions and 11 deletions

View file

@ -90,13 +90,15 @@ debug_dump_get_element_state (GstElement * element)
} }
static gchar * static gchar *
debug_dump_get_element_params (GstElement * element) debug_dump_get_element_params (GstElement * element,
GstDebugGraphDetails details)
{ {
gchar *param_name = NULL; gchar *param_name = NULL;
GParamSpec **properties, *property; GParamSpec **properties, *property;
GValue value = { 0, }; GValue value = { 0, };
guint i, number_of_properties; guint i, number_of_properties;
gchar *tmp, *value_str; gchar *tmp, *value_str;
const gchar *ellipses;
/* get paramspecs and show non-default properties */ /* get paramspecs and show non-default properties */
properties = properties =
@ -118,14 +120,30 @@ debug_dump_get_element_params (GstElement * element)
tmp = g_strdup_value_contents (&value); tmp = g_strdup_value_contents (&value);
value_str = g_strescape (tmp, NULL); value_str = g_strescape (tmp, NULL);
g_free (tmp); g_free (tmp);
if (param_name) {
/* too long, ellipsize */
if (!(details & GST_DEBUG_GRAPH_SHOW_FULL_PARAMS) &&
strlen (value_str) > 80)
ellipses = "...";
else
ellipses = "";
if (param_name)
tmp = param_name; tmp = param_name;
param_name = g_strdup_printf ("%s\\n%s=%s", else
tmp, property->name, value_str); tmp = (char *) "";
g_free (tmp);
if (details & GST_DEBUG_GRAPH_SHOW_FULL_PARAMS) {
param_name = g_strdup_printf ("%s\\n%s=%s", tmp, property->name,
value_str);
} else { } else {
param_name = g_strdup_printf ("\\n%s=%s", property->name, value_str); param_name = g_strdup_printf ("%s\\n%s=%.80s%s", tmp, property->name,
value_str, ellipses);
} }
if (tmp[0] != '\0')
g_free (tmp);
g_free (value_str); g_free (value_str);
} }
g_value_unset (&value); g_value_unset (&value);
@ -514,7 +532,8 @@ debug_dump_element (GstBin * bin, GstDebugGraphDetails details,
state_name = debug_dump_get_element_state (GST_ELEMENT (element)); state_name = debug_dump_get_element_state (GST_ELEMENT (element));
} }
if (details & GST_DEBUG_GRAPH_SHOW_NON_DEFAULT_PARAMS) { if (details & GST_DEBUG_GRAPH_SHOW_NON_DEFAULT_PARAMS) {
param_name = debug_dump_get_element_params (GST_ELEMENT (element)); param_name = debug_dump_get_element_params (GST_ELEMENT (element),
details);
} }
/* elements */ /* elements */
g_string_append_printf (str, "%ssubgraph cluster_%s {\n", spc, g_string_append_printf (str, "%ssubgraph cluster_%s {\n", spc,
@ -627,7 +646,7 @@ debug_dump_header (GstBin * bin, GstDebugGraphDetails details, GString * str)
state_name = debug_dump_get_element_state (GST_ELEMENT (bin)); state_name = debug_dump_get_element_state (GST_ELEMENT (bin));
} }
if (details & GST_DEBUG_GRAPH_SHOW_NON_DEFAULT_PARAMS) { if (details & GST_DEBUG_GRAPH_SHOW_NON_DEFAULT_PARAMS) {
param_name = debug_dump_get_element_params (GST_ELEMENT (bin)); param_name = debug_dump_get_element_params (GST_ELEMENT (bin), details);
} }
/* write header */ /* write header */

View file

@ -33,9 +33,14 @@ G_BEGIN_DECLS
* GstDebugGraphDetails: * GstDebugGraphDetails:
* @GST_DEBUG_GRAPH_SHOW_MEDIA_TYPE: show caps-name on edges * @GST_DEBUG_GRAPH_SHOW_MEDIA_TYPE: show caps-name on edges
* @GST_DEBUG_GRAPH_SHOW_CAPS_DETAILS: show caps-details on edges * @GST_DEBUG_GRAPH_SHOW_CAPS_DETAILS: show caps-details on edges
* @GST_DEBUG_GRAPH_SHOW_NON_DEFAULT_PARAMS: show modified parameters on elements * @GST_DEBUG_GRAPH_SHOW_NON_DEFAULT_PARAMS: show modified parameters on
* elements
* @GST_DEBUG_GRAPH_SHOW_STATES: show element states * @GST_DEBUG_GRAPH_SHOW_STATES: show element states
* @GST_DEBUG_GRAPH_SHOW_ALL: show all details * @GST_DEBUG_GRAPH_SHOW_FULL_PARAMS: show full element parameter values even
* if they are very long
* @GST_DEBUG_GRAPH_SHOW_ALL: show all the typical details that one might want
* @GST_DEBUG_GRAPH_SHOW_VERBOSE: show all details regardless of how large or
* verbose they make the resulting output
* *
* Available details for pipeline graphs produced by GST_DEBUG_BIN_TO_DOT_FILE() * Available details for pipeline graphs produced by GST_DEBUG_BIN_TO_DOT_FILE()
* and GST_DEBUG_BIN_TO_DOT_FILE_WITH_TS(). * and GST_DEBUG_BIN_TO_DOT_FILE_WITH_TS().
@ -45,7 +50,9 @@ typedef enum {
GST_DEBUG_GRAPH_SHOW_CAPS_DETAILS = (1<<1), GST_DEBUG_GRAPH_SHOW_CAPS_DETAILS = (1<<1),
GST_DEBUG_GRAPH_SHOW_NON_DEFAULT_PARAMS = (1<<2), GST_DEBUG_GRAPH_SHOW_NON_DEFAULT_PARAMS = (1<<2),
GST_DEBUG_GRAPH_SHOW_STATES = (1<<3), GST_DEBUG_GRAPH_SHOW_STATES = (1<<3),
GST_DEBUG_GRAPH_SHOW_ALL = ((1<<4)-1) GST_DEBUG_GRAPH_SHOW_FULL_PARAMS = (1<<4),
GST_DEBUG_GRAPH_SHOW_ALL = ((1<<4)-1),
GST_DEBUG_GRAPH_SHOW_VERBOSE = (-1)
} GstDebugGraphDetails; } GstDebugGraphDetails;