Ejemplo n.º 1
0
/* 
 * add stack margin markers
 */
static void add_stack_markers()
{
	int active_frame_index = active_module->get_active_frame();
	
	GList *iter;
	int frame_index;
	for (iter = stack, frame_index = 0; iter; iter = iter->next, frame_index++)
	{
		if (iter)
		{
			frame *f = (frame*)iter->data;
			if (f->have_source)
			{
				if (active_frame_index == frame_index)
				{
					markers_add_current_instruction(f->file, f->line);
				}
				else
				{
					markers_add_frame(f->file, f->line);
				}
			}
		}
	}
}
Ejemplo n.º 2
0
/*
 * 	Set breakpoint and stack markers for a file
 */
static void set_markers_for_file(const gchar* file)
{
	GList *breaks;
	if ( (breaks = breaks_get_for_document(file)) )
	{
		GList *iter = breaks;
		while (iter)
		{
			breakpoint *bp = (breakpoint*)iter->data;
			markers_add_breakpoint(bp);
			
			iter = iter->next;
		}
		g_list_free(breaks);
	}

	/* set frames markers if exists */
	if (DBS_STOPPED == debug_get_state())
	{
		int active_frame_index = debug_get_active_frame();
		
		GList *iter = debug_get_stack();
		int frame_index = 0;
		for (; iter; iter = iter->next, frame_index++)
		{
			if (iter)
			{
				frame *f = (frame*)iter->data;
				if (f->have_source && !strcmp(f->file, file))
				{
					if (active_frame_index == frame_index)
					{
						markers_add_current_instruction(f->file, f->line);
					}
					else
					{
						markers_add_frame(f->file, f->line);
					}
				}
			}
		}
	}
}
Ejemplo n.º 3
0
/* 
 * called when a frame in the stack tree has been selected 
 */
static void on_select_frame(int frame_number)
{
	frame *f = (frame*)g_list_nth(stack, active_module->get_active_frame())->data;
	markers_remove_current_instruction(f->file, f->line);
	markers_add_frame(f->file, f->line);

	active_module->set_active_frame(frame_number);
	
	/* clear calltips cache */
	g_hash_table_remove_all(calltips);
	
	/* autos */
	GList *autos = active_module->get_autos();
	update_variables(GTK_TREE_VIEW(atree), NULL, autos);
	
	/* watches */
	GList *watches = active_module->get_watches();
	update_variables(GTK_TREE_VIEW(wtree), NULL, watches);

	f = (frame*)g_list_nth(stack, frame_number)->data;
	markers_remove_frame(f->file, f->line);
	markers_add_current_instruction(f->file, f->line);
}