Exemplo n.º 1
0
static void
parse_stack_list(gint seq, gchar ** list, gchar * resp)
{
	GHashTable *h = gdbio_get_results(resp, list);
	HLST(h, stack);
	gdbio_pop_seq(seq);
	if (stack)
	{
		g_slist_foreach(stack, stack_cb, h);
		if (frame_list)
		{
			gint len = g_slist_length(frame_list);
			if (len >= MAX_STACK_RETURN)
			{
				gdbio_error_func
					(ngettext(
						"Stack too deep to display!\n(Showing only %d frame)",
						"Stack too deep to display!\n(Showing only %d frames)",
						 len), len);
			}
			gdbio_send_seq_cmd(parse_stack_args, "-stack-list-arguments 1 0 %d\n",
					   len - 1);
		}
	}
	if (h)
		g_hash_table_destroy(h);
}
Exemplo n.º 2
0
static void
get_env_args(gint seq, gchar ** list, gchar * resp)
{
	gchar *args;
	gint i;
	gdbio_pop_seq(seq);
	for (i = 0; list[i]; i++)
	{
		if (strncmp(list[i], "~\"", 2) == 0)
		{
			args = unquote(list[i] + 1);
			if (args && *args)
			{
				gchar *quote = strchr(g_strstrip(args), '"');
				if (quote)
				{
					memmove(args, quote + 1, strlen(quote));
					quote = strrchr(args, '"');
					if (quote && g_str_equal(quote, "\"."))
					{
						*quote = '\0';
						break;
					}
				}
			}
			g_free(args);
			args = NULL;
		}
	}
	env_info.args = args;
	if (gdbio_environ_func)
	{
		gdbio_environ_func(&env_info);
	}
}
Exemplo n.º 3
0
static void
parse_stack_args(gint seq, gchar ** list, gchar * resp)
{
	GHashTable *h = gdbio_get_results(resp, list);
	HLST(h, stack_args);
	gdbio_pop_seq(seq);
	if (stack_args)
	{
		if (frame_list)
		{
			g_slist_foreach(stack_args, merge_stack_args_cb, NULL);
			gdbio_stack_list_func(frame_list);
			free_frame_list();
		}
	}
	if (h)
		g_hash_table_destroy(h);
}
Exemplo n.º 4
0
static void
get_env_path(gint seq, gchar ** list, gchar * resp)
{
	GHashTable *h = gdbio_get_results(resp, list);
	HSTR(h, path);
	gdbio_pop_seq(seq);
	if (path)
	{
		env_info.path = g_strdup(path);
	}
	else
	{
		gdbio_info_func(_("Failed to retrieve executable search path setting from GDB."));
//    gdblx_dump_table(h);
	}
	if (h)
		g_hash_table_destroy(h);
	gdbio_send_seq_cmd(get_env_dirs, "-environment-directory\n");
}
Exemplo n.º 5
0
static void
get_env_cwd(gint seq, gchar ** list, gchar * resp)
{
	GHashTable *h = gdbio_get_results(resp, list);
	HSTR(h, cwd);
	gdbio_pop_seq(seq);
	free_env_info();
	if (cwd)
	{
		env_info.cwd = g_strdup(cwd);
	}
	else
	{
		gdbio_info_func(_("Failed to retrieve working directory setting from GDB."));
//    gdblx_dump_table(h);
	}
	if (h)
		g_hash_table_destroy(h);
	gdbio_send_seq_cmd(get_env_path, "-environment-path\n");
}
Exemplo n.º 6
0
static void
get_env_dirs(gint seq, gchar ** list, gchar * resp)
{
	GHashTable *h = gdbio_get_results(resp, list);
	HSTR(h, source_path);
	gdbio_pop_seq(seq);
	if (source_path)
	{
		gchar *p;
		env_info.dirs = g_strdup(source_path);
		p = strstr(env_info.dirs, "$cdir:$cwd");
		if (p)
		{
			memmove(p, p + 10, strlen(p + 10) + 1);
		}
		p = strchr(env_info.dirs, '\0');
		if (p)
		{
			while (p > env_info.dirs)
			{
				p--;
				if (*p == ':')
				{
					*p = '\0';
				}
				else
				{
					break;
				}
			}
		}
	}
	else
	{
		gdbio_info_func(_("Failed to retrieve source search path setting from GDB."));
//    gdblx_dump_table(h);
	}
	if (h)
		g_hash_table_destroy(h);
	gdbio_send_seq_cmd(get_env_args, "show args\n");
}