SF.net SVN: geany-plugins:[2127] trunk/geany-plugins/debugger/src
cesspit at users.sourceforge.net
cesspit at xxxxx
Sat Aug 6 21:58:41 UTC 2011
Revision: 2127
http://geany-plugins.svn.sourceforge.net/geany-plugins/?rev=2127&view=rev
Author: cesspit
Date: 2011-08-06 21:58:41 +0000 (Sat, 06 Aug 2011)
Log Message:
-----------
debugger plugin:
- fixed bug with setting frame markers for files that are not open
- adding frame markers on open file event if a current file has stack traced code
Modified Paths:
--------------
trunk/geany-plugins/debugger/src/callbacks.c
trunk/geany-plugins/debugger/src/debug.c
trunk/geany-plugins/debugger/src/debug.h
trunk/geany-plugins/debugger/src/markers.c
Modified: trunk/geany-plugins/debugger/src/callbacks.c
===================================================================
--- trunk/geany-plugins/debugger/src/callbacks.c 2011-08-06 21:02:48 UTC (rev 2126)
+++ trunk/geany-plugins/debugger/src/callbacks.c 2011-08-06 21:58:41 UTC (rev 2127)
@@ -112,6 +112,31 @@
g_list_free(breaks);
}
+ /* set frames markers if exists */
+ if (DBS_STOPPED == debug_get_state())
+ {
+ GList *iter = debug_get_stack();
+ if (iter)
+ {
+ frame *f = (frame*)iter->data;
+ if (f->have_source && !strcmp(f->file, file))
+ {
+ markers_add_current_instruction(f->file, f->line);
+ }
+
+ iter = iter->next;
+ while (iter)
+ {
+ f = (frame*)iter->data;
+ if (f->have_source && !strcmp(f->file, file))
+ {
+ markers_add_frame(f->file, f->line);
+ }
+ iter = iter->next;
+ }
+ }
+ }
+
/* if debug is active - tell the debug module that a file was opened */
if (DBS_IDLE != debug_get_state())
debug_on_file_open(doc);
Modified: trunk/geany-plugins/debugger/src/debug.c
===================================================================
--- trunk/geany-plugins/debugger/src/debug.c 2011-08-06 21:02:48 UTC (rev 2126)
+++ trunk/geany-plugins/debugger/src/debug.c 2011-08-06 21:58:41 UTC (rev 2127)
@@ -957,6 +957,14 @@
}
/*
+ * gets current stack frames lisy
+ */
+GList* debug_get_stack()
+{
+ return stack;
+}
+
+/*
* gets debug module index from name
* arguments:
* modulename - debug module name
Modified: trunk/geany-plugins/debugger/src/debug.h
===================================================================
--- trunk/geany-plugins/debugger/src/debug.h 2011-08-06 21:02:48 UTC (rev 2126)
+++ trunk/geany-plugins/debugger/src/debug.h 2011-08-06 21:58:41 UTC (rev 2127)
@@ -34,25 +34,26 @@
/* function type to execute on interrupt */
typedef void (*bs_callback)(breakpoint*, break_set_activity);
-void debug_init(GtkWidget* nb);
+void debug_init(GtkWidget* nb);
enum dbs debug_get_state();
-void debug_run();
-void debug_stop();
-void debug_step_over();
-void debug_step_into();
-void debug_step_out();
-void debug_execute_until(gchar *file, int line);
-gboolean debug_set_break(breakpoint* bp, break_set_activity bsa);
-gboolean debug_remove_break(breakpoint* bp);
-void debug_request_interrupt(bs_callback cb, breakpoint* bp, break_set_activity flags);
+void debug_run();
+void debug_stop();
+void debug_step_over();
+void debug_step_into();
+void debug_step_out();
+void debug_execute_until(gchar *file, int line);
+gboolean debug_set_break(breakpoint* bp, break_set_activity bsa);
+gboolean debug_remove_break(breakpoint* bp);
+void debug_request_interrupt(bs_callback cb, breakpoint* bp, break_set_activity flags);
gchar* debug_error_message();
-GList* debug_get_modules();
-int debug_get_module_index(gchar *modulename);
-gboolean debug_supports_async_breaks();
-void debug_destroy();
+GList* debug_get_modules();
+int debug_get_module_index(gchar *modulename);
+gboolean debug_supports_async_breaks();
+void debug_destroy();
gchar* debug_evaluate_expression(gchar *expression);
-gboolean debug_current_instruction_have_sources();
-void debug_jump_to_current_instruction();
-void debug_on_file_open(GeanyDocument *doc);
-gchar* debug_get_calltip_for_expression(gchar* expression);
+gboolean debug_current_instruction_have_sources();
+void debug_jump_to_current_instruction();
+void debug_on_file_open(GeanyDocument *doc);
+gchar* debug_get_calltip_for_expression(gchar* expression);
+GList* debug_get_stack();
Modified: trunk/geany-plugins/debugger/src/markers.c
===================================================================
--- trunk/geany-plugins/debugger/src/markers.c 2011-08-06 21:02:48 UTC (rev 2126)
+++ trunk/geany-plugins/debugger/src/markers.c 2011-08-06 21:58:41 UTC (rev 2127)
@@ -213,8 +213,11 @@
void markers_add_current_instruction(char* file, int line)
{
GeanyDocument *doc = document_find_by_filename(file);
- sci_set_marker_at_line(doc->editor->sci, line - 1, M_CI_ARROW);
- sci_set_marker_at_line(doc->editor->sci, line - 1, M_CI_BACKGROUND);
+ if (doc)
+ {
+ sci_set_marker_at_line(doc->editor->sci, line - 1, M_CI_ARROW);
+ sci_set_marker_at_line(doc->editor->sci, line - 1, M_CI_BACKGROUND);
+ }
}
/*
@@ -223,9 +226,12 @@
void markers_remove_current_instruction(char* file, int line)
{
GeanyDocument *doc = document_find_by_filename(file);
- sci_delete_marker_at_line(doc->editor->sci, line - 1, M_CI_ARROW);
- sci_delete_marker_at_line(doc->editor->sci, line - 1, M_CI_BACKGROUND);
- scintilla_send_message(doc->editor->sci, SCI_SETFOCUS, TRUE, 0);
+ if (doc)
+ {
+ sci_delete_marker_at_line(doc->editor->sci, line - 1, M_CI_ARROW);
+ sci_delete_marker_at_line(doc->editor->sci, line - 1, M_CI_BACKGROUND);
+ scintilla_send_message(doc->editor->sci, SCI_SETFOCUS, TRUE, 0);
+ }
}
/*
@@ -234,7 +240,10 @@
void markers_add_frame(char* file, int line)
{
GeanyDocument *doc = document_find_by_filename(file);
- sci_set_marker_at_line(doc->editor->sci, line - 1, M_FRAME);
+ if (doc)
+ {
+ sci_set_marker_at_line(doc->editor->sci, line - 1, M_FRAME);
+ }
}
/*
@@ -243,6 +252,9 @@
void markers_remove_frame(char* file, int line)
{
GeanyDocument *doc = document_find_by_filename(file);
- sci_delete_marker_at_line(doc->editor->sci, line - 1, M_FRAME);
- scintilla_send_message(doc->editor->sci, SCI_SETFOCUS, TRUE, 0);
+ if (doc)
+ {
+ sci_delete_marker_at_line(doc->editor->sci, line - 1, M_FRAME);
+ scintilla_send_message(doc->editor->sci, SCI_SETFOCUS, TRUE, 0);
+ }
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
More information about the Plugins-Commits
mailing list