anjuta r3669 - in trunk: . libanjuta/interfaces plugins/debug-manager plugins/gdb
- From: sgranjoux svn gnome org
- To: svn-commits-list gnome org
- Subject: anjuta r3669 - in trunk: . libanjuta/interfaces plugins/debug-manager plugins/gdb
- Date: Sat, 16 Feb 2008 10:19:33 +0000 (GMT)
Author: sgranjoux
Date: Sat Feb 16 10:19:33 2008
New Revision: 3669
URL: http://svn.gnome.org/viewvc/anjuta?rev=3669&view=rev
Log:
* plugins/debug-manager/command.c:
Destroy local variables on each step
* plugins/debug-manager/debug_tree.c,
plugins/debug-manager/watch.c,
plugins/debug-manager/locals.c,
plugins/gdb/debugger.c,
libanjuta/interfaces/libanjuta.idl:
Parse local variables scope (not used yet)
Modified:
trunk/ChangeLog
trunk/libanjuta/interfaces/libanjuta.idl
trunk/plugins/debug-manager/command.c
trunk/plugins/debug-manager/debug_tree.c
trunk/plugins/debug-manager/locals.c
trunk/plugins/debug-manager/watch.c
trunk/plugins/gdb/debugger.c
Modified: trunk/libanjuta/interfaces/libanjuta.idl
==============================================================================
--- trunk/libanjuta/interfaces/libanjuta.idl (original)
+++ trunk/libanjuta/interfaces/libanjuta.idl Sat Feb 16 10:19:33 2008
@@ -3770,6 +3770,8 @@
gchar *type;
gchar *value;
gboolean changed;
+ gboolean exited;
+ gboolean deleted;
gint children;
}
Modified: trunk/plugins/debug-manager/command.c
==============================================================================
--- trunk/plugins/debug-manager/command.c (original)
+++ trunk/plugins/debug-manager/command.c Sat Feb 16 10:19:33 2008
@@ -160,7 +160,7 @@
NEED_PROGRAM_LOADED | NEED_PROGRAM_STOPPED,
DMA_REMOVE_BREAK_COMMAND =
REMOVE_BREAK_COMMAND |
- NEED_PROGRAM_LOADED | NEED_PROGRAM_STOPPED,
+ NEED_PROGRAM_LOADED | NEED_PROGRAM_STOPPED | NEED_PROGRAM_RUNNING,
DMA_LIST_BREAK_COMMAND =
LIST_BREAK_COMMAND |
NEED_PROGRAM_LOADED | NEED_PROGRAM_STOPPED | NEED_PROGRAM_RUNNING,
@@ -256,7 +256,7 @@
NEED_PROGRAM_STOPPED,
DMA_CREATE_VARIABLE_COMMAND =
CREATE_VARIABLE |
- NEED_PROGRAM_STOPPED,
+ NEED_PROGRAM_STOPPED | NEED_PROGRAM_RUNNING,
DMA_EVALUATE_VARIABLE_COMMAND =
EVALUATE_VARIABLE | CANCEL_IF_PROGRAM_RUNNING |
NEED_PROGRAM_STOPPED,
@@ -265,7 +265,7 @@
NEED_PROGRAM_STOPPED,
DMA_DELETE_VARIABLE_COMMAND =
DELETE_VARIABLE |
- NEED_PROGRAM_STOPPED,
+ NEED_PROGRAM_STOPPED | NEED_PROGRAM_RUNNING,
DMA_ASSIGN_VARIABLE_COMMAND =
ASSIGN_VARIABLE |
NEED_PROGRAM_STOPPED,
Modified: trunk/plugins/debug-manager/debug_tree.c
==============================================================================
--- trunk/plugins/debug-manager/debug_tree.c (original)
+++ trunk/plugins/debug-manager/debug_tree.c Sat Feb 16 10:19:33 2008
@@ -95,7 +95,9 @@
struct _DmaVariableData {
guchar modified; /* Set by tree update */
guchar changed; /* Set by global update */
- gboolean analyzed; /* Used as a tag to find variable outside scope */
+
+ gboolean exited; /* variable outside scope */
+ gboolean deleted; /* variable should be deleted */
gboolean auto_update;
@@ -169,7 +171,6 @@
}
data->changed = TRUE;
- data->analyzed = TRUE;
data->auto_update = auto_update;
return data;
@@ -346,7 +347,7 @@
static gboolean
-clear_analyzed(GtkTreeModel *model, GtkTreePath* path,
+set_deleted(GtkTreeModel *model, GtkTreePath* path,
GtkTreeIter* iter, gpointer user_data)
{
DmaVariableData *data;
@@ -356,8 +357,8 @@
gtk_tree_model_get(model, iter, DTREE_ENTRY_COLUMN, &data, -1);
g_return_val_if_fail (data, TRUE); /* Use on root node only, data != NULL */
-
- data->analyzed = FALSE;
+
+ data->deleted= TRUE;
return FALSE;
}
@@ -470,7 +471,7 @@
}
static void
-destroy_non_analyzed (DebugTree *tree, GtkTreeModel* model)
+destroy_deleted (DebugTree *tree, GtkTreeModel* model)
{
DmaVariableData *data;
GtkTreeIter iter;
@@ -481,7 +482,7 @@
for (success = gtk_tree_model_get_iter_first (model, &iter); success == TRUE; )
{
gtk_tree_model_get(model, &iter, DTREE_ENTRY_COLUMN, &data, -1);
- if ((data != NULL) && (data->analyzed == FALSE))
+ if ((data != NULL) && (data->deleted == TRUE))
{
success = debug_tree_remove (tree, &iter);
}
@@ -576,7 +577,6 @@
{
data->name = strdup (variable->name);
}
- data->analyzed = TRUE;
data->changed = TRUE;
gtk_tree_store_set(GTK_TREE_STORE(pack->model), &iter,
@@ -672,7 +672,7 @@
if ((text != NULL) && (*text != '\0'))
{
- IAnjutaDebuggerVariableObject var = {NULL, NULL, NULL, NULL, FALSE, -1};
+ IAnjutaDebuggerVariableObject var = {NULL, NULL, NULL, NULL, FALSE, FALSE, FALSE, -1};
var.expression = text;
debug_tree_add_watch (tree, &var, TRUE);
@@ -865,12 +865,16 @@
{
gchar *exp;
gchar *typ;
+ DmaVariableData *node;
gboolean found;
- gtk_tree_model_get (GTK_TREE_MODEL (model), iter, TYPE_COLUMN, &typ, VARIABLE_COLUMN, &exp, -1);
+ gtk_tree_model_get (GTK_TREE_MODEL (model), iter, TYPE_COLUMN, &typ,
+ VARIABLE_COLUMN, &exp,
+ DTREE_ENTRY_COLUMN, &node, -1);
found = ((type == NULL) || (strcmp (typ, type) == 0))
- && ((expression == NULL) || (strcmp (exp, expression) == 0));
+ && ((expression == NULL) || (strcmp (exp, expression) == 0))
+ && (node->exited == FALSE);
if (typ != NULL) g_free (typ);
if (exp != NULL) g_free (exp);
@@ -886,16 +890,15 @@
DebugTree* tree = (DebugTree *)user_data;
const gchar *expression = (const gchar *)data;
GtkTreeModel*const model = gtk_tree_view_get_model (GTK_TREE_VIEW(tree->view));
- IAnjutaDebuggerVariableObject var = {NULL, NULL, NULL, NULL, FALSE, -1};
+ IAnjutaDebuggerVariableObject var = {NULL, NULL, NULL, NULL, FALSE, FALSE, FALSE, -1};
GtkTreeIter iter;
if (debug_tree_find_expression (model, &iter, expression, NULL))
{
DmaVariableData *data;
- gtk_tree_model_get (model, &iter, DTREE_ENTRY_COLUMN, &data, -1);
-
- if (data != NULL) data->analyzed = TRUE;
+ gtk_tree_model_get (model, &iter, DTREE_ENTRY_COLUMN, &data, -1);
+ if (data != NULL) data->deleted = FALSE;
}
else
{
@@ -908,13 +911,13 @@
debug_tree_replace_list (DebugTree *tree, const GList *expressions)
{
GtkTreeModel* model = gtk_tree_view_get_model (GTK_TREE_VIEW(tree->view));
-
- /* Mark variables as not analyzed */
- my_gtk_tree_model_foreach_child(model, NULL, clear_analyzed, NULL);
+
+ /* Mark variables as deleted */
+ my_gtk_tree_model_foreach_child(model, NULL, set_deleted, NULL);
g_list_foreach ((GList *)expressions, on_replace_watch, tree);
- destroy_non_analyzed (tree, model);
+ destroy_deleted (tree, model);
}
void
@@ -1007,7 +1010,7 @@
{
DebugTree* this = (DebugTree *)user_data;
gboolean auto_update = ((const gchar *)data)[0] & AUTO_UPDATE_WATCH ? TRUE : FALSE;
- IAnjutaDebuggerVariableObject var = {NULL, NULL, NULL, NULL, FALSE, -1};
+ IAnjutaDebuggerVariableObject var = {NULL, NULL, NULL, NULL, FALSE, FALSE, FALSE, -1};
var.expression = &((gchar *)data)[1];
debug_tree_add_watch (this, &var, auto_update);
@@ -1023,7 +1026,7 @@
on_add_manual_watch (gpointer data, gpointer user_data)
{
DebugTree* this = (DebugTree *)user_data;
- IAnjutaDebuggerVariableObject var = {NULL, NULL, NULL, NULL, FALSE, -1};
+ IAnjutaDebuggerVariableObject var = {NULL, NULL, NULL, NULL, FALSE, FALSE, FALSE, -1};
var.expression = &((gchar *)data)[0];
debug_tree_add_watch (this, &var, FALSE);
@@ -1033,7 +1036,7 @@
on_add_auto_watch (gpointer data, gpointer user_data)
{
DebugTree* this = (DebugTree *)user_data;
- IAnjutaDebuggerVariableObject var = {NULL, NULL, NULL, NULL, FALSE, -1};
+ IAnjutaDebuggerVariableObject var = {NULL, NULL, NULL, NULL, FALSE, FALSE, -1};
var.expression = &((gchar *)data)[0];
debug_tree_add_watch (this, &var, TRUE);
@@ -1067,7 +1070,12 @@
DmaVariableData *data;
gtk_tree_model_get (model, &iter, DTREE_ENTRY_COLUMN, &data, -1);
- if (data != NULL) data->changed = TRUE;
+ if (data != NULL)
+ {
+ data->changed = var->changed;
+ data->exited = var->exited;
+ data->deleted = var->deleted;
+ }
return;
}
@@ -1216,19 +1224,23 @@
if (data->name == NULL)
{
- /* Variable need to be created first */
- gchar *exp;
- DmaVariablePacket *pack;
-
- gtk_tree_model_get (model, iter, VARIABLE_COLUMN, &exp, -1);
- pack = dma_variable_packet_new(model, iter, tree, data);
- data->modified = TRUE;
- dma_queue_create_variable (
- tree->debugger,
- exp,
- (IAnjutaDebuggerCallback)gdb_var_create,
- pack);
- g_free (exp);
+ /* Check is the variable creation is not pending */
+ if (data->packet == NULL)
+ {
+ /* Variable need to be created first */
+ gchar *exp;
+ DmaVariablePacket *pack;
+
+ gtk_tree_model_get (model, iter, VARIABLE_COLUMN, &exp, -1);
+ pack = dma_variable_packet_new(model, iter, tree, data);
+ data->modified = TRUE;
+ dma_queue_create_variable (
+ tree->debugger,
+ exp,
+ (IAnjutaDebuggerCallback)gdb_var_create,
+ pack);
+ g_free (exp);
+ }
return FALSE;
}
@@ -1454,7 +1466,6 @@
debug_tree_free (DebugTree * tree)
{
GtkTreeModel *model;
- // AnjutaUI *ui;
g_return_if_fail (tree);
Modified: trunk/plugins/debug-manager/locals.c
==============================================================================
--- trunk/plugins/debug-manager/locals.c (original)
+++ trunk/plugins/debug-manager/locals.c Sat Feb 16 10:19:33 2008
@@ -70,6 +70,7 @@
if (g_list_length ((GList*)list) < 1)
return;
+ debug_tree_update_all(self->debug_tree);
debug_tree_replace_list (self->debug_tree, list);
debug_tree_update_all(self->debug_tree);
}
Modified: trunk/plugins/debug-manager/watch.c
==============================================================================
--- trunk/plugins/debug-manager/watch.c (original)
+++ trunk/plugins/debug-manager/watch.c Sat Feb 16 10:19:33 2008
@@ -89,7 +89,7 @@
gchar *new_expr;
// const gchar *value;
InspectDialog dlg;
- IAnjutaDebuggerVariableObject var = {NULL, NULL, NULL, NULL, FALSE, -1};
+ IAnjutaDebuggerVariableObject var = {NULL, NULL, NULL, NULL, FALSE, FALSE, FALSE, -1};
gxml = glade_xml_new (GLADE_FILE, INSPECT_EVALUATE_DIALOG, NULL);
dlg.dialog = glade_xml_get_widget (gxml, INSPECT_EVALUATE_DIALOG);
@@ -145,7 +145,7 @@
GtkWidget *name_entry;
GtkWidget *auto_update_check;
gint reply;
- IAnjutaDebuggerVariableObject var = {NULL, NULL, NULL, NULL, FALSE, -1};
+ IAnjutaDebuggerVariableObject var = {NULL, NULL, NULL, NULL, FALSE, FALSE, FALSE, -1};
gxml = glade_xml_new (GLADE_FILE, ADD_WATCH_DIALOG, NULL);
dialog = glade_xml_get_widget (gxml, ADD_WATCH_DIALOG);
Modified: trunk/plugins/gdb/debugger.c
==============================================================================
--- trunk/plugins/gdb/debugger.c (original)
+++ trunk/plugins/gdb/debugger.c Sat Feb 16 10:19:33 2008
@@ -3569,21 +3569,45 @@
changed_count = gdbmi_value_get_size (gdbmi_changelist);
for(; idx<changed_count; ++idx)
- {
+ {
const GDBMIValue *const gdbmi_change =
gdbmi_value_list_get_nth (gdbmi_changelist, idx);
- const GDBMIValue *gdbmi_val =
- gdbmi_value_hash_lookup (gdbmi_change, "in_scope");
- IAnjutaDebuggerVariableObject *var;
-
- if(0 != strcmp(gdbmi_value_literal_get(gdbmi_val), "false"))
- {
- gdbmi_val = gdbmi_value_hash_lookup (gdbmi_change, "name");
- var = g_new0 (IAnjutaDebuggerVariableObject, 1);
- var->changed = TRUE;
- var->name = (gchar *)gdbmi_value_literal_get(gdbmi_val);
+ const GDBMIValue * value;
+
+ value = gdbmi_value_hash_lookup (gdbmi_change, "name");
+ if (value)
+ {
+ IAnjutaDebuggerVariableObject *var = g_new0 (IAnjutaDebuggerVariableObject, 1);
+ var->changed = TRUE;
+ var->name = (gchar *)gdbmi_value_literal_get(value);
list = g_list_prepend (list, var);
+
+ value = gdbmi_value_hash_lookup (gdbmi_change, "type_changed");
+ if (value != NULL)
+ {
+ const gchar *type_changed = gdbmi_value_literal_get (value);
+
+ if (strcmp (type_changed, "true"))
+ {
+ var->deleted = TRUE;
+ }
+ }
+
+ value = gdbmi_value_hash_lookup (gdbmi_change, "in_scope");
+ if (value != NULL)
+ {
+ const gchar *in_scope = gdbmi_value_literal_get(value);
+
+ if (strcmp (in_scope, "false") == 0)
+ {
+ var->exited = TRUE;
+ }
+ else if (strcmp (in_scope, "invalid") == 0)
+ {
+ var->deleted = TRUE;
+ }
+ }
}
}
list = g_list_reverse (list);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]