Simpler message formatting

This commit is contained in:
Søren Sandmann Pedersen
2009-09-07 22:20:13 -04:00
parent c3288467bc
commit 43e419f774
2 changed files with 29 additions and 39 deletions

View File

@ -405,8 +405,6 @@ collector_new (CollectorFunc callback,
static void
process_mmap (Collector *collector, mmap_event_t *mmap)
{
g_print ("%d %d => %s at %llx\n", mmap->pid, mmap->tid, mmap->filename, mmap->addr);
tracker_add_map (collector->tracker,
mmap->pid,
mmap->addr,
@ -482,8 +480,8 @@ process_event (Collector *collector,
break;
default:
g_print ("unknown event: %d (%d)\n",
event->header.type, event->header.size);
g_warning ("Got unknown event: %d (%d)\n",
event->header.type, event->header.size);
break;
}
}
@ -496,8 +494,6 @@ collector_start (Collector *collector,
GList *list;
int i;
g_print ("starting\n");
if (!collector->stash)
collector->stash = stack_stash_new (NULL);
if (!collector->tracker)
@ -519,8 +515,6 @@ collector_start (Collector *collector,
for (list = collector->counters; list != NULL; list = list->next)
counter_enable (list->data);
g_print ("started\n");
return TRUE;
}

View File

@ -2,6 +2,7 @@
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#include <glib/gprintf.h>
#include "tracker.h"
#include "stackstash.h"
@ -88,7 +89,8 @@ fake_new_process (tracker_t *tracker, pid_t pid)
{
if (strncmp ("Name:", lines[i], 5) == 0)
{
tracker_add_process (tracker, pid, g_strstrip (strchr (lines[i], ':')));
tracker_add_process (
tracker, pid, g_strstrip (strchr (lines[i], ':') + 1));
break;
}
}
@ -190,6 +192,7 @@ tracker_t *
tracker_new (void)
{
tracker_t *tracker = g_new0 (tracker_t, 1);
GTimeVal before, after;
tracker->n_event_bytes = 0;
tracker->n_allocated_bytes = DEFAULT_SIZE;
@ -197,8 +200,6 @@ tracker_new (void)
tracker->stash = stack_stash_new (NULL);
GTimeVal before, after;
g_get_current_time (&before);
populate_from_proc (tracker);
@ -286,8 +287,6 @@ tracker_add_map (tracker_t * tracker,
event.inode = inode;
tracker_append (tracker, &event, sizeof (event));
g_print (" Added new map: %d (%s) %llx -- %llx \n", pid, filename, start, end);
}
void
@ -583,8 +582,10 @@ get_kernel_symbols (void)
}
if (!kernel_syms)
{
g_print ("Warning: /proc/kallsyms could not be "
"read. Kernel symbols will not be available\n");
}
initialized = TRUE;
}
@ -642,15 +643,26 @@ process_locate_map (process_t *process, gulong addr)
}
static const char *
make_message (state_t *state, const char *message)
make_message (state_t *state, const char *format, ...)
{
char *result = g_hash_table_lookup (state->unique_comms, message);
va_list args;
char *message;
char *result;
if (!result)
va_start (args, format);
g_vasprintf (&message, format, args);
va_end (args);
result = g_hash_table_lookup (state->unique_comms, message);
if (result)
{
result = g_strdup (message);
g_hash_table_insert (state->unique_comms, (char *)result, (char *)result);
g_free (message);
}
else
{
result = message;
g_hash_table_insert (state->unique_comms, result, result);
}
return result;
@ -676,11 +688,7 @@ lookup_symbol (state_t *state,
if (!map)
{
char *message = g_strdup_printf ("No map [%s]", process->comm);
sym = make_message (state, message);
g_free (message);
sym = make_message (state, "No map [%s]", process->comm);
}
else
{
@ -697,11 +705,7 @@ lookup_symbol (state_t *state,
/* If the inodes don't match, it's probably because the
* file has changed since the process was started.
*/
char *message = g_strdup_printf ("inode mismatch for %s", map->filename);
sym = make_message (state, message);
g_free (message);
sym = make_message (state, "%s: inode mismatch", map->filename);
}
else
{
@ -757,10 +761,10 @@ static void
process_sample (state_t *state, StackStash *resolved, sample_t *sample)
{
const context_info_t *context = NULL;
const char *cmdline;
uint64_t *resolved_traces;
process_t *process;
StackNode *n;
char *cmdline;
int len;
process = g_hash_table_lookup (
@ -811,15 +815,7 @@ process_sample (state_t *state, StackStash *resolved, sample_t *sample)
resolved_traces[len++] = POINTER_TO_U64 (symbol);
}
cmdline = g_hash_table_lookup (
state->unique_comms, process->comm);
if (!cmdline)
{
cmdline = g_strdup (process->comm);
g_hash_table_insert (state->unique_comms, cmdline, cmdline);
}
cmdline = make_message (state, "[%s]", process->comm);
resolved_traces[len++] = POINTER_TO_U64 (cmdline);
resolved_traces[len++] = POINTER_TO_U64 (