Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
Marco Bubke
flatpak-qt-creator
Commits
5bcc81a6
Commit
5bcc81a6
authored
May 07, 2009
by
hjk
Browse files
debugger: introduce an explicit detach action
parent
d42a7e40
Changes
7
Hide whitespace changes
Inline
Side-by-side
src/plugins/debugger/debuggermanager.cpp
View file @
5bcc81a6
...
...
@@ -1245,15 +1245,6 @@ void DebuggerManager::setStatus(int status)
const
bool
ready
=
status
==
DebuggerInferiorStopped
&&
startMode
()
!=
AttachCore
;
// FIXME
// m_startExternalAction->setEnabled(!started && !starting);
// m_attachExternalAction->setEnabled(!started && !starting);
//#ifdef Q_OS_WIN
// m_attachCoreAction->setEnabled(false);
//#else
// m_attachCoreAction->setEnabled(!started && !starting);
//#endif
// m_attachRemoteAction->setEnabled(!started && !starting);
m_watchAction
->
setEnabled
(
ready
);
m_breakAction
->
setEnabled
(
true
);
...
...
@@ -1316,6 +1307,12 @@ void DebuggerManager::continueExec()
m_engine
->
continueInferior
();
}
void
DebuggerManager
::
detachDebugger
()
{
if
(
m_engine
)
m_engine
->
detachDebugger
();
}
void
DebuggerManager
::
interruptDebuggingRequest
()
{
if
(
Debugger
::
Constants
::
Internal
::
debug
)
...
...
src/plugins/debugger/debuggermanager.h
View file @
5bcc81a6
...
...
@@ -242,6 +242,7 @@ public slots:
void
stepIExec
();
void
nextIExec
();
void
continueExec
();
void
detachDebugger
();
void
addToWatchWindow
();
void
updateWatchModel
();
...
...
src/plugins/debugger/debuggerplugin.cpp
View file @
5bcc81a6
...
...
@@ -100,6 +100,7 @@ const char * const STARTEXTERNAL = "Debugger.StartExternal";
const
char
*
const
ATTACHEXTERNAL
=
"Debugger.AttachExternal"
;
const
char
*
const
ATTACHCORE
=
"Debugger.AttachCore"
;
const
char
*
const
ATTACHREMOTE
=
"Debugger.AttachRemote"
;
const
char
*
const
DETACH
=
"Debugger.Detach"
;
const
char
*
const
RUN_TO_LINE
=
"Debugger.RunToLine"
;
const
char
*
const
RUN_TO_FUNCTION
=
"Debugger.RunToFunction"
;
...
...
@@ -486,6 +487,11 @@ bool DebuggerPlugin::initialize(const QStringList &arguments, QString *errorMess
this
,
SLOT
(
startRemoteApplication
()));
m_detachAction
=
new
QAction
(
this
);
m_detachAction
->
setText
(
tr
(
"Detach debugger"
));
connect
(
m_detachAction
,
SIGNAL
(
triggered
()),
m_manager
,
SLOT
(
detachDebugger
()));
Core
::
ActionContainer
*
mdebug
=
am
->
actionContainer
(
ProjectExplorer
::
Constants
::
M_DEBUG
);
...
...
@@ -508,6 +514,11 @@ bool DebuggerPlugin::initialize(const QStringList &arguments, QString *errorMess
cmd
=
am
->
registerAction
(
m_manager
->
m_continueAction
,
ProjectExplorer
::
Constants
::
DEBUG
,
QList
<
int
>
()
<<
m_gdbRunningContext
);
mdebug
->
addAction
(
cmd
,
Core
::
Constants
::
G_DEFAULT_ONE
);
cmd
=
am
->
registerAction
(
m_detachAction
,
Constants
::
DETACH
,
globalcontext
);
mdebug
->
addAction
(
cmd
,
Core
::
Constants
::
G_DEFAULT_ONE
);
cmd
=
am
->
registerAction
(
m_manager
->
m_stopAction
,
Constants
::
INTERRUPT
,
globalcontext
);
...
...
@@ -783,6 +794,9 @@ bool DebuggerPlugin::initialize(const QStringList &arguments, QString *errorMess
this
,
SLOT
(
activatePreviousMode
()));
connect
(
m_manager
,
SIGNAL
(
debugModeRequested
()),
this
,
SLOT
(
activateDebugMode
()));
connect
(
m_manager
,
SIGNAL
(
statusChanged
(
int
)),
this
,
SLOT
(
updateActions
(
int
)));
connect
(
theDebuggerAction
(
SettingsDialog
),
SIGNAL
(
triggered
()),
this
,
SLOT
(
showSettingsDialog
()));
...
...
@@ -1095,6 +1109,28 @@ void DebuggerPlugin::startRemoteApplication()
runControl
->
start
();
}
void
DebuggerPlugin
::
updateActions
(
int
status
)
{
const
bool
started
=
status
==
DebuggerInferiorRunning
||
status
==
DebuggerInferiorRunningRequested
||
status
==
DebuggerInferiorStopRequested
||
status
==
DebuggerInferiorStopped
;
const
bool
starting
=
status
==
DebuggerProcessStartingUp
;
//const bool running = status == DebuggerInferiorRunning;
const
bool
ready
=
status
==
DebuggerInferiorStopped
&&
m_manager
->
startMode
()
!=
AttachCore
;
m_startExternalAction
->
setEnabled
(
!
started
&&
!
starting
);
m_attachExternalAction
->
setEnabled
(
!
started
&&
!
starting
);
#ifdef Q_OS_WIN
m_attachCoreAction
->
setEnabled
(
false
);
#else
m_attachCoreAction
->
setEnabled
(
!
started
&&
!
starting
);
#endif
m_startRemoteAction
->
setEnabled
(
!
started
&&
!
starting
);
m_detachAction
->
setEnabled
(
ready
);
}
#include "debuggerplugin.moc"
...
...
src/plugins/debugger/debuggerplugin.h
View file @
5bcc81a6
...
...
@@ -88,6 +88,8 @@ private slots:
void
setConfigValue
(
const
QString
&
name
,
const
QVariant
&
value
);
void
requestContextMenu
(
TextEditor
::
ITextEditor
*
editor
,
int
lineNumber
,
QMenu
*
menu
);
void
updateActions
(
int
status
);
void
resetLocation
();
void
gotoLocation
(
const
QString
&
fileName
,
int
line
,
bool
setMarker
);
...
...
@@ -125,6 +127,7 @@ private:
QAction
*
m_startRemoteAction
;
QAction
*
m_attachExternalAction
;
QAction
*
m_attachCoreAction
;
QAction
*
m_detachAction
;
};
}
// namespace Internal
...
...
src/plugins/debugger/gdbengine.cpp
View file @
5bcc81a6
...
...
@@ -1254,7 +1254,6 @@ void GdbEngine::handleExecRun(const GdbResultRecord &response, const QVariant &)
{
if
(
response
.
resultClass
==
GdbResultRunning
)
{
qq
->
notifyInferiorRunning
();
q
->
showStatusMessage
(
tr
(
"Running..."
));
}
else
if
(
response
.
resultClass
==
GdbResultError
)
{
const
QByteArray
&
msg
=
response
.
data
.
findChild
(
"msg"
).
data
();
if
(
msg
==
"Cannot find bounds of current function"
)
{
...
...
@@ -1323,6 +1322,12 @@ void GdbEngine::shutdown()
exitDebugger
();
}
void
GdbEngine
::
detachDebugger
()
{
postCommand
(
_
(
"detach"
));
postCommand
(
_
(
"-gdb-exit"
),
CB
(
handleExit
));
}
void
GdbEngine
::
exitDebugger
()
{
debugMessage
(
_
(
"GDBENGINE EXITDEBUFFER: %1"
).
arg
(
m_gdbProc
.
state
()));
...
...
@@ -1340,7 +1345,7 @@ void GdbEngine::exitDebugger()
qDebug
()
<<
"STATUS ON EXITDEBUGGER:"
<<
q
->
status
());
interruptInferior
();
}
if
(
q
->
startMode
()
==
AttachExternal
||
q
->
startMode
()
==
StartRemote
)
if
(
q
->
startMode
()
==
AttachExternal
)
postCommand
(
_
(
"detach"
));
else
postCommand
(
_
(
"kill"
));
...
...
src/plugins/debugger/gdbengine.h
View file @
5bcc81a6
...
...
@@ -99,6 +99,7 @@ private:
void
setToolTipExpression
(
const
QPoint
&
pos
,
const
QString
&
exp
);
bool
startDebugger
();
void
exitDebugger
();
void
detachDebugger
();
void
continueInferior
();
void
interruptInferior
();
...
...
src/plugins/debugger/idebuggerengine.h
View file @
5bcc81a6
...
...
@@ -52,6 +52,7 @@ public:
virtual
void
setToolTipExpression
(
const
QPoint
&
pos
,
const
QString
&
exp
)
=
0
;
virtual
bool
startDebugger
()
=
0
;
virtual
void
exitDebugger
()
=
0
;
virtual
void
detachDebugger
()
{}
virtual
void
updateWatchModel
()
=
0
;
virtual
void
stepExec
()
=
0
;
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment