[nemiver] Don't delete varobjs if not attached to target
- From: Dodji Seketeli <dodji src gnome org>
- To: svn-commits-list gnome org
- Subject: [nemiver] Don't delete varobjs if not attached to target
- Date: Sun, 31 May 2009 03:07:10 -0400 (EDT)
commit ae9f04ee122d80f013663148cfcf499640c1af81
Author: Dodji Seketeli <dodji redhat com>
Date: Sat May 30 22:12:04 2009 +0200
Don't delete varobjs if not attached to target
* src/dbgengine/nmv-gdb-engine.cc:
(GDBEngine::is_attached_to_target): If the debugger is not running,
then its not attached to the target.
* src/dbgengine/nmv-varobj-walker.cc:
(VarobjWalker::delete_varobj_if_necessary): New method.
(VarobjWalker::~VarobjWalker): Don't delete the variable object if
the debugger is not attached to the target.
---
src/dbgengine/nmv-gdb-engine.cc | 2 +-
src/dbgengine/nmv-varobj-walker.cc | 23 +++++++++++++++++++++--
2 files changed, 22 insertions(+), 3 deletions(-)
diff --git a/src/dbgengine/nmv-gdb-engine.cc b/src/dbgengine/nmv-gdb-engine.cc
index b3068e8..5471f36 100644
--- a/src/dbgengine/nmv-gdb-engine.cc
+++ b/src/dbgengine/nmv-gdb-engine.cc
@@ -2477,7 +2477,7 @@ GDBEngine::is_attached_to_target () const
LOG_FUNCTION_SCOPE_NORMAL_DD;
THROW_IF_FAIL (m_priv);
LOG_DD ("is_attached: " << (int)m_priv->is_attached);
- return m_priv->is_attached;
+ return m_priv->is_gdb_running () && m_priv->is_attached;
}
void
diff --git a/src/dbgengine/nmv-varobj-walker.cc b/src/dbgengine/nmv-varobj-walker.cc
index a60b1cd..fef2953 100644
--- a/src/dbgengine/nmv-varobj-walker.cc
+++ b/src/dbgengine/nmv-varobj-walker.cc
@@ -71,8 +71,7 @@ public:
~VarobjWalker ()
{
- if (m_variable && m_debugger)
- m_debugger->delete_variable (m_variable);
+ delete_varobj_if_necessary ();
}
sigc::signal<void,
@@ -94,6 +93,8 @@ public:
IDebuggerSafePtr get_debugger () const;
+ void delete_varobj_if_necessary ();
+
void do_walk_variable_real (const IDebugger::VariableSafePtr);
void on_variable_unfolded_signal (const IDebugger::VariableSafePtr a_var);
@@ -124,6 +125,8 @@ VarobjWalker::connect (IDebuggerSafePtr a_debugger,
THROW_IF_FAIL (a_debugger);
THROW_IF_FAIL (!a_var_name.empty ());
+ delete_varobj_if_necessary ();
+
m_debugger = a_debugger;
m_var_name = a_var_name;
m_debugger->create_variable
@@ -143,6 +146,8 @@ VarobjWalker::connect (IDebuggerSafePtr a_debugger,
// The variable must be backed by variable objects.
THROW_IF_FAIL (!a_var->internal_name ().empty ());
+ delete_varobj_if_necessary ();
+
m_debugger = a_debugger;
m_variable = a_var;
}
@@ -182,6 +187,20 @@ VarobjWalker::get_debugger () const
}
void
+VarobjWalker::delete_varobj_if_necessary ()
+{
+ LOG_FUNCTION_SCOPE_NORMAL_DD;
+
+ if (!m_var_name.empty ()
+ && m_variable
+ && m_debugger
+ && m_debugger->is_attached_to_target ()) {
+ m_debugger->delete_variable (m_variable);
+ }
+
+}
+
+void
VarobjWalker::do_walk_variable_real (const IDebugger::VariableSafePtr a_var)
{
LOG_FUNCTION_SCOPE_NORMAL_DD;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]