mirror of
https://github.com/varun-r-mallya/sysprof.git
synced 2026-02-12 16:10:54 +00:00
libsysprof-gtk: print layer item information when activated
This commit is contained in:
@ -32,6 +32,57 @@ static const GOptionEntry entries[] = {
|
|||||||
{ 0 }
|
{ 0 }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static gboolean
|
||||||
|
activate_layer_item_cb (SysprofChart *chart,
|
||||||
|
SysprofChartLayer *layer,
|
||||||
|
gpointer item,
|
||||||
|
SysprofDocument *document)
|
||||||
|
{
|
||||||
|
g_assert (SYSPROF_IS_CHART (chart));
|
||||||
|
g_assert (SYSPROF_IS_CHART_LAYER (layer));
|
||||||
|
g_assert (G_IS_OBJECT (item));
|
||||||
|
g_assert (SYSPROF_IS_DOCUMENT (document));
|
||||||
|
|
||||||
|
g_print ("Activated %s in layer '%s' [%s]\n",
|
||||||
|
G_OBJECT_TYPE_NAME (item),
|
||||||
|
sysprof_chart_layer_get_title (layer),
|
||||||
|
G_OBJECT_TYPE_NAME (layer));
|
||||||
|
|
||||||
|
if (SYSPROF_IS_DOCUMENT_FRAME (item))
|
||||||
|
{
|
||||||
|
g_print ("time_offset=%"G_GINT64_FORMAT" pid=%d\n",
|
||||||
|
sysprof_document_frame_get_time_offset (item),
|
||||||
|
sysprof_document_frame_get_pid (item));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (SYSPROF_IS_DOCUMENT_TRACEABLE (item))
|
||||||
|
{
|
||||||
|
guint depth = sysprof_document_traceable_get_stack_depth (item);
|
||||||
|
|
||||||
|
g_print ("Thread-Id: %u\n",
|
||||||
|
sysprof_document_traceable_get_thread_id (item));
|
||||||
|
g_print ("Stack Depth: %u\n", depth);
|
||||||
|
|
||||||
|
if (depth <= 128)
|
||||||
|
{
|
||||||
|
SysprofSymbol *symbols[128];
|
||||||
|
SysprofAddressContext final_context;
|
||||||
|
guint n_symbols = G_N_ELEMENTS (symbols);
|
||||||
|
|
||||||
|
n_symbols = sysprof_document_symbolize_traceable (document,
|
||||||
|
item,
|
||||||
|
symbols,
|
||||||
|
n_symbols,
|
||||||
|
&final_context);
|
||||||
|
|
||||||
|
for (guint i = 0; i < n_symbols; i++)
|
||||||
|
g_print (" %s\n", sysprof_symbol_get_name (symbols[i]));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return GDK_EVENT_STOP;
|
||||||
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
main (int argc,
|
main (int argc,
|
||||||
char *argv[])
|
char *argv[])
|
||||||
@ -73,7 +124,6 @@ main (int argc,
|
|||||||
main_loop = g_main_loop_new (NULL, FALSE);
|
main_loop = g_main_loop_new (NULL, FALSE);
|
||||||
|
|
||||||
loader = sysprof_document_loader_new (filename);
|
loader = sysprof_document_loader_new (filename);
|
||||||
sysprof_document_loader_set_symbolizer (loader, sysprof_no_symbolizer_get ());
|
|
||||||
|
|
||||||
if (!(document = sysprof_document_loader_load (loader, NULL, &error)))
|
if (!(document = sysprof_document_loader_load (loader, NULL, &error)))
|
||||||
g_error ("Failed to load document: %s", error->message);
|
g_error ("Failed to load document: %s", error->message);
|
||||||
@ -110,11 +160,16 @@ main (int argc,
|
|||||||
|
|
||||||
chart = g_object_new (SYSPROF_TYPE_CHART,
|
chart = g_object_new (SYSPROF_TYPE_CHART,
|
||||||
"session", session,
|
"session", session,
|
||||||
"title", "Stack Traces",
|
"title", "Samples",
|
||||||
"height-request", 128,
|
"height-request", 128,
|
||||||
NULL);
|
NULL);
|
||||||
|
g_signal_connect (chart,
|
||||||
|
"activate-layer-item",
|
||||||
|
G_CALLBACK (activate_layer_item_cb),
|
||||||
|
document);
|
||||||
layer = g_object_new (SYSPROF_TYPE_DEPTH_LAYER,
|
layer = g_object_new (SYSPROF_TYPE_DEPTH_LAYER,
|
||||||
"series", samples_series,
|
"series", samples_series,
|
||||||
|
"title", "Stack Depth",
|
||||||
NULL);
|
NULL);
|
||||||
sysprof_chart_add_layer (SYSPROF_CHART (chart),
|
sysprof_chart_add_layer (SYSPROF_CHART (chart),
|
||||||
SYSPROF_CHART_LAYER (layer));
|
SYSPROF_CHART_LAYER (layer));
|
||||||
|
|||||||
Reference in New Issue
Block a user