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
c60f1468
Commit
c60f1468
authored
Sep 30, 2009
by
hjk
Browse files
debugger: improve trk shutdown
parent
65592579
Changes
3
Hide whitespace changes
Inline
Side-by-side
src/plugins/debugger/debuggermanager.cpp
View file @
c60f1468
...
...
@@ -1628,7 +1628,7 @@ void DebuggerManager::setState(DebuggerState state)
QString
msg
=
_
(
"State changed from %1(%2) to %3(%4)."
)
.
arg
(
stateName
(
d
->
m_state
)).
arg
(
d
->
m_state
).
arg
(
stateName
(
state
)).
arg
(
state
);
//if (!((d->m_state == -1 && state == 0) || (d->m_state == 0 && state == 0)))
// qDebug() << msg
<< d->m_state << state
;
// qDebug() << msg;
if
(
!
isAllowedTransition
(
d
->
m_state
,
state
))
qDebug
()
<<
"UNEXPECTED STATE TRANSITION: "
<<
msg
;
...
...
src/plugins/debugger/gdb/trkgdbadapter.cpp
View file @
c60f1468
...
...
@@ -95,6 +95,8 @@ TrkGdbAdapter::TrkGdbAdapter(GdbEngine *engine, const TrkOptionsPtr &options) :
m_bufferedMemoryRead
(
true
),
m_waitCount
(
0
)
{
m_gdbServer
=
0
;
m_gdbConnection
=
0
;
#ifdef Q_OS_WIN
const
DWORD
portOffset
=
GetCurrentProcessId
()
%
100
;
#else
...
...
@@ -141,7 +143,7 @@ TrkGdbAdapter::TrkGdbAdapter(GdbEngine *engine, const TrkOptionsPtr &options) :
TrkGdbAdapter
::~
TrkGdbAdapter
()
{
m_gdbServer
.
close
()
;
delete
m_gdbServer
;
logMessage
(
"Shutting down.
\n
"
);
}
...
...
@@ -257,7 +259,6 @@ void TrkGdbAdapter::startInferiorEarly()
QString
msg
=
QString
::
fromLatin1
(
"Failed to connect to %1 after "
"%2 attempts"
).
arg
(
device
).
arg
(
m_waitCount
);
logMessage
(
msg
);
setState
(
DebuggerNotReady
);
emit
adapterStartFailed
(
msg
);
}
return
;
...
...
@@ -300,8 +301,9 @@ void TrkGdbAdapter::logMessage(const QString &msg)
void
TrkGdbAdapter
::
handleGdbConnection
()
{
logMessage
(
"HANDLING GDB CONNECTION"
);
m_gdbConnection
=
m_gdbServer
.
nextPendingConnection
();
QTC_ASSERT
(
m_gdbConnection
==
0
,
/**/
);
m_gdbConnection
=
m_gdbServer
->
nextPendingConnection
();
QTC_ASSERT
(
m_gdbConnection
,
return
);
connect
(
m_gdbConnection
,
SIGNAL
(
disconnected
()),
m_gdbConnection
,
SLOT
(
deleteLater
()));
connect
(
m_gdbConnection
,
SIGNAL
(
readyRead
()),
...
...
@@ -315,6 +317,7 @@ static inline QString msgGdbPacket(const QString &p)
void
TrkGdbAdapter
::
readGdbServerCommand
()
{
QTC_ASSERT
(
m_gdbConnection
,
return
);
QByteArray
packet
=
m_gdbConnection
->
readAll
();
m_gdbReadBuffer
.
append
(
packet
);
...
...
@@ -1000,6 +1003,14 @@ void TrkGdbAdapter::handleCreateProcess(const TrkResult &result)
// 40 00 00]
//logMessage(" RESULT: " + result.toString());
// [80 08 00 00 00 01 B5 00 00 01 B6 78 67 40 00 00 40 00 00]
if
(
result
.
errorCode
())
{
logMessage
(
"ERROR: "
+
result
.
errorString
());
QString
msg
=
_
(
"Cannot start executable
\"
%1
\"
on the device:
\n
%2"
)
.
arg
(
m_remoteExecutable
).
arg
(
result
.
errorString
());
//m_trkDevice.close();
emit
adapterStartFailed
(
msg
);
return
;
}
const
char
*
data
=
result
.
data
.
data
();
m_session
.
pid
=
extractInt
(
data
+
1
);
m_session
.
tid
=
extractInt
(
data
+
5
);
...
...
@@ -1481,7 +1492,7 @@ void TrkGdbAdapter::startInferior()
void
TrkGdbAdapter
::
handleFirstContinue
(
const
GdbResponse
&
record
)
{
QTC_ASSERT
(
state
()
==
InferiorRunning
Requested
,
qDebug
()
<<
state
());
QTC_ASSERT
(
state
()
==
InferiorRunning
,
qDebug
()
<<
state
());
if
(
record
.
resultClass
==
GdbResultDone
)
{
debugMessage
(
_
(
"INFERIOR STARTED"
));
showStatusMessage
(
tr
(
"Inferior running."
));
...
...
@@ -1518,11 +1529,14 @@ static void setGdbCygwinEnvironment(const QString &cygwin, QProcess *process)
void
TrkGdbAdapter
::
startGdb
()
{
QTC_ASSERT
(
state
()
==
AdapterStarting
,
qDebug
()
<<
state
());
if
(
!
m_gdbServer
.
listen
(
QHostAddress
(
gdbServerIP
()),
gdbServerPort
()))
{
QTC_ASSERT
(
m_gdbServer
==
0
,
delete
m_gdbServer
);
QTC_ASSERT
(
m_gdbConnection
==
0
,
m_gdbConnection
=
0
);
m_gdbServer
=
new
QTcpServer
(
this
);
if
(
!
m_gdbServer
->
listen
(
QHostAddress
(
gdbServerIP
()),
gdbServerPort
()))
{
QString
msg
=
QString
(
"Unable to start the gdb server at %1: %2."
)
.
arg
(
m_gdbServerName
).
arg
(
m_gdbServer
.
errorString
());
.
arg
(
m_gdbServerName
).
arg
(
m_gdbServer
->
errorString
());
logMessage
(
msg
);
setState
(
DebuggerNotReady
);
emit
adapterStartFailed
(
msg
);
return
;
}
...
...
@@ -1530,7 +1544,7 @@ void TrkGdbAdapter::startGdb()
logMessage
(
QString
(
"Gdb server running on %1.
\n
Little endian assumed."
)
.
arg
(
m_gdbServerName
));
connect
(
&
m_gdbServer
,
SIGNAL
(
newConnection
()),
connect
(
m_gdbServer
,
SIGNAL
(
newConnection
()),
this
,
SLOT
(
handleGdbConnection
()));
logMessage
(
"STARTING GDB"
);
...
...
@@ -1692,6 +1706,10 @@ void TrkGdbAdapter::shutdown()
{
switch
(
state
())
{
case
AdapterStarting
:
setState
(
DebuggerNotReady
);
return
;
case
InferiorStopped
:
case
InferiorStopping
:
case
InferiorRunningRequested
:
...
...
@@ -1702,7 +1720,10 @@ void TrkGdbAdapter::shutdown()
case
InferiorShutDown
:
setState
(
AdapterShuttingDown
);
sendTrkMessage
(
0x02
,
TrkCB
(
handleDisconnect
));
//sendTrkMessage(0x02, TrkCB(handleDisconnect));
m_trkDevice
.
close
();
delete
m_gdbServer
;
m_gdbServer
=
0
;
m_engine
->
postCommand
(
_
(
"-gdb-exit"
),
CB
(
handleExit
));
return
;
...
...
src/plugins/debugger/gdb/trkgdbadapter.h
View file @
c60f1468
...
...
@@ -221,7 +221,7 @@ public:
void
logMessage
(
const
QString
&
msg
);
// triggers output() if m_verbose
Q_SLOT
void
trkLogMessage
(
const
QString
&
msg
);
QTcpServer
m_gdbServer
;
QPointer
<
QTcpServer
>
m_gdbServer
;
QPointer
<
QTcpSocket
>
m_gdbConnection
;
QByteArray
m_gdbReadBuffer
;
bool
m_gdbAckMode
;
...
...
Write
Preview
Markdown
is supported
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