Skip to content
GitLab
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
76d2c581
Commit
76d2c581
authored
Nov 15, 2010
by
hjk
Browse files
debugger: move marker filename and linenumber to BreakpointItem
parent
29beabd5
Changes
5
Hide whitespace changes
Inline
Side-by-side
src/plugins/debugger/breakhandler.cpp
View file @
76d2c581
...
...
@@ -162,7 +162,7 @@ BreakpointId BreakHandler::findBreakpointByFileAndLine(const QString &fileName,
{
ConstIterator
it
=
m_storage
.
constBegin
(),
et
=
m_storage
.
constEnd
();
for
(
;
it
!=
et
;
++
it
)
if
(
it
->
data
.
isLocatedAt
(
fileName
,
lineNumber
,
useMarkerPosition
))
if
(
it
->
isLocatedAt
(
fileName
,
lineNumber
,
useMarkerPosition
))
return
it
.
key
();
return
BreakpointId
(
-
1
);
}
...
...
@@ -305,15 +305,14 @@ void BreakHandler::updateMarker(BreakpointId id)
{
Iterator
it
=
m_storage
.
find
(
id
);
QTC_ASSERT
(
it
!=
m_storage
.
end
(),
return
);
const
BreakpointData
&
data
=
it
->
data
;
BreakpointMarker
*
marker
=
it
->
marker
;
if
(
marker
&&
(
data
.
m_
markerFileName
!=
marker
->
fileName
()
||
data
.
m_
markerLineNumber
!=
marker
->
lineNumber
()))
if
(
marker
&&
(
it
->
markerFileName
!=
marker
->
fileName
()
||
it
->
markerLineNumber
!=
marker
->
lineNumber
()))
it
->
destroyMarker
();
if
(
!
marker
&&
!
data
.
m_
markerFileName
.
isEmpty
()
&&
data
.
m_
markerLineNumber
>
0
)
{
marker
=
new
BreakpointMarker
(
id
,
data
.
m_
markerFileName
,
data
.
m_
markerLineNumber
);
if
(
!
marker
&&
!
it
->
markerFileName
.
isEmpty
()
&&
it
->
markerLineNumber
>
0
)
{
marker
=
new
BreakpointMarker
(
id
,
it
->
markerFileName
,
it
->
markerLineNumber
);
it
->
marker
=
marker
;
}
}
...
...
@@ -491,10 +490,8 @@ void BreakHandler::setter(BreakpointId id, const type &value) \
PROPERTY
(
bool
,
useFullPath
,
setUseFullPath
)
PROPERTY
(
QString
,
markerFileName
,
setMarkerFileName
)
PROPERTY
(
QString
,
fileName
,
setFileName
)
PROPERTY
(
QString
,
functionName
,
setFunctionName
)
PROPERTY
(
int
,
markerLineNumber
,
setMarkerLineNumber
)
PROPERTY
(
BreakpointType
,
type
,
setType
)
PROPERTY
(
QByteArray
,
threadSpec
,
setThreadSpec
)
PROPERTY
(
QByteArray
,
condition
,
setCondition
)
...
...
@@ -522,6 +519,16 @@ void BreakHandler::setEnabled(BreakpointId id, bool on)
}
}
void
BreakHandler
::
setMarkerFileAndLine
(
BreakpointId
id
,
const
QString
&
fileName
,
int
lineNumber
)
{
Iterator
it
=
m_storage
.
find
(
id
);
QTC_ASSERT
(
it
!=
m_storage
.
end
(),
return
);
it
->
markerFileName
=
fileName
;
it
->
markerLineNumber
=
lineNumber
;
updateMarker
(
id
);
}
BreakpointState
BreakHandler
::
state
(
BreakpointId
id
)
const
{
ConstIterator
it
=
m_storage
.
find
(
id
);
...
...
@@ -728,8 +735,8 @@ void BreakHandler::updateLineNumberFromMarker(BreakpointId id, int lineNumber)
QTC_ASSERT
(
it
!=
m_storage
.
end
(),
return
);
//if (data.markerLineNumber == lineNumber)
// return;
if
(
it
->
data
.
markerLineNumber
()
!=
lineNumber
)
{
it
->
data
.
setM
arkerLineNumber
(
lineNumber
)
;
if
(
it
->
markerLineNumber
!=
lineNumber
)
{
it
->
m
arkerLineNumber
=
lineNumber
;
// FIXME: Should we tell gdb about the change?
// Ignore it for now, as we would require re-compilation
// and debugger re-start anyway.
...
...
@@ -849,6 +856,17 @@ void BreakHandler::setResponse(BreakpointId id, const BreakpointResponse &data)
updateMarker
(
id
);
}
//////////////////////////////////////////////////////////////////
//
// Storage
//
//////////////////////////////////////////////////////////////////
BreakHandler
::
BreakpointItem
::
BreakpointItem
()
:
state
(
BreakpointNew
),
engine
(
0
),
marker
(
0
),
markerLineNumber
(
0
)
{}
void
BreakHandler
::
BreakpointItem
::
destroyMarker
()
{
BreakpointMarker
*
m
=
marker
;
...
...
@@ -883,6 +901,13 @@ static QString stateToString(BreakpointState state)
}
};
bool
BreakHandler
::
BreakpointItem
::
isLocatedAt
(
const
QString
&
fileName
,
int
lineNumber
,
bool
useMarkerPosition
)
const
{
int
line
=
useMarkerPosition
?
markerLineNumber
:
data
.
lineNumber
();
return
lineNumber
==
line
&&
fileNameMatch
(
fileName
,
markerFileName
);
}
QString
BreakHandler
::
BreakpointItem
::
toToolTip
()
const
{
QString
t
;
...
...
@@ -923,9 +948,9 @@ QString BreakHandler::BreakpointItem::toToolTip() const
<<
"<tr><td>"
<<
tr
(
"Engine:"
)
<<
"</td><td>"
<<
(
engine
?
engine
->
objectName
()
:
"0"
)
<<
"</td></tr>"
<<
"<tr><td>"
<<
tr
(
"Marker File:"
)
<<
"</td><td>"
<<
QDir
::
toNativeSeparators
(
data
.
m_
markerFileName
)
<<
"</td></tr>"
<<
"</td><td>"
<<
QDir
::
toNativeSeparators
(
markerFileName
)
<<
"</td></tr>"
<<
"<tr><td>"
<<
tr
(
"Marker Line:"
)
<<
"</td><td>"
<<
data
.
m_
markerLineNumber
<<
"</td></tr>"
<<
"</td><td>"
<<
markerLineNumber
<<
"</td></tr>"
<<
"<tr><td>"
<<
tr
(
"Breakpoint Number:"
)
<<
"</td><td>"
<<
response
.
number
<<
"</td></tr>"
<<
"<tr><td>"
<<
tr
(
"Breakpoint Type:"
)
...
...
src/plugins/debugger/breakhandler.h
View file @
76d2c581
...
...
@@ -44,6 +44,9 @@
//////////////////////////////////////////////////////////////////
namespace
Debugger
{
class
DebuggerEngine
;
namespace
Internal
{
class
BreakpointMarker
;
...
...
@@ -105,8 +108,8 @@ public:
void setter(BreakpointId id, const type &value);
PROPERTY
(
bool
,
useFullPath
,
setUseFullPath
)
PROPERTY
(
QString
,
markerFileName
,
setMarkerFileName
)
PROPERTY
(
int
,
markerLineNumber
,
setMarkerLineNumber
)
//
PROPERTY(QString, markerFileName, setMarkerFileName)
//
PROPERTY(int, markerLineNumber, setMarkerLineNumber)
PROPERTY
(
QByteArray
,
condition
,
setCondition
)
PROPERTY
(
int
,
ignoreCount
,
setIgnoreCount
)
PROPERTY
(
QByteArray
,
threadSpec
,
setThreadSpec
)
...
...
@@ -120,6 +123,8 @@ public:
bool
isEnabled
(
BreakpointId
id
)
const
;
void
setEnabled
(
BreakpointId
id
,
bool
on
);
void
updateLineNumberFromMarker
(
BreakpointId
id
,
int
lineNumber
);
void
setMarkerFileAndLine
(
BreakpointId
id
,
const
QString
&
fileName
,
int
lineNumber
);
DebuggerEngine
*
engine
(
BreakpointId
id
)
const
;
void
setEngine
(
BreakpointId
id
,
DebuggerEngine
*
engine
);
...
...
@@ -168,10 +173,13 @@ private:
struct
BreakpointItem
{
BreakpointItem
()
:
state
(
BreakpointNew
),
engine
(
0
),
marker
(
0
)
{}
BreakpointItem
();
void
destroyMarker
();
bool
isPending
()
const
{
return
state
==
BreakpointPending
||
state
==
BreakpointNew
;
}
bool
isLocatedAt
(
const
QString
&
fileName
,
int
lineNumber
,
bool
useMarkerPosition
)
const
;
QString
toToolTip
()
const
;
BreakpointData
data
;
...
...
@@ -179,6 +187,8 @@ private:
DebuggerEngine
*
engine
;
// Engine currently handling the breakpoint.
BreakpointResponse
response
;
BreakpointMarker
*
marker
;
QString
markerFileName
;
// Used to locate the marker.
int
markerLineNumber
;
};
typedef
QHash
<
BreakpointId
,
BreakpointItem
>
BreakpointStorage
;
typedef
BreakpointStorage
::
ConstIterator
ConstIterator
;
...
...
src/plugins/debugger/breakpoint.cpp
View file @
76d2c581
...
...
@@ -57,74 +57,68 @@ bool BreakpointParameters::equals(const BreakpointParameters &rhs) const
&&
functionName
==
rhs
.
functionName
;
}
BreakpointData
::
BreakpointData
(
BreakpointType
type
)
:
m_parameters
(
type
),
m_markerLineNumber
(
0
)
{
}
BreakpointData
::
BreakpointData
(
BreakpointType
type
)
:
m_parameters
(
type
)
{}
BreakpointResponse
::
BreakpointResponse
()
:
number
(
0
),
multiple
(
false
)
{
}
BreakpointResponse
::
BreakpointResponse
()
:
number
(
0
),
multiple
(
false
)
{}
#define SETIT(var, value) return (var != value) && (var = value, true)
bool
BreakpointData
::
setUseFullPath
(
bool
on
)
{
SETIT
(
m_parameters
.
useFullPath
,
on
);
}
bool
BreakpointData
::
setMarkerFileName
(
const
QString
&
file
)
{
SETIT
(
m_markerFileName
,
file
);
}
bool
BreakpointData
::
setMarkerLineNumber
(
int
line
)
{
SETIT
(
m_markerLineNumber
,
line
);
}
{
SETIT
(
m_parameters
.
useFullPath
,
on
);
}
bool
BreakpointData
::
setFileName
(
const
QString
&
file
)
{
SETIT
(
m_parameters
.
fileName
,
file
);
}
{
SETIT
(
m_parameters
.
fileName
,
file
);
}
bool
BreakpointData
::
setEnabled
(
bool
on
)
{
SETIT
(
m_parameters
.
enabled
,
on
);
}
{
SETIT
(
m_parameters
.
enabled
,
on
);
}
bool
BreakpointData
::
setIgnoreCount
(
int
count
)
{
SETIT
(
m_parameters
.
ignoreCount
,
count
);
}
{
SETIT
(
m_parameters
.
ignoreCount
,
count
);
}
bool
BreakpointData
::
setFunctionName
(
const
QString
&
name
)
{
SETIT
(
m_parameters
.
functionName
,
name
);
}
{
SETIT
(
m_parameters
.
functionName
,
name
);
}
bool
BreakpointData
::
setLineNumber
(
int
line
)
{
SETIT
(
m_parameters
.
lineNumber
,
line
);
}
{
SETIT
(
m_parameters
.
lineNumber
,
line
);
}
bool
BreakpointData
::
setAddress
(
quint64
address
)
{
SETIT
(
m_parameters
.
address
,
address
);
}
{
SETIT
(
m_parameters
.
address
,
address
);
}
bool
BreakpointData
::
setThreadSpec
(
const
QByteArray
&
spec
)
{
SETIT
(
m_parameters
.
threadSpec
,
spec
);
}
{
SETIT
(
m_parameters
.
threadSpec
,
spec
);
}
bool
BreakpointData
::
setType
(
BreakpointType
type
)
{
SETIT
(
m_parameters
.
type
,
type
);
}
bool
BreakpointData
::
setCondition
(
const
QByteArray
&
cond
)
{
SETIT
(
m_parameters
.
condition
,
cond
);
}
#undef SETIT
// Compare file names case insensitively on Windows.
static
inline
bool
fileNameMatch
(
const
QString
&
f1
,
const
QString
&
f2
)
{
#ifdef Q_OS_WIN
return
f1
.
compare
(
f2
,
Qt
::
CaseInsensitive
)
==
0
;
#else
return
f1
==
f2
;
#endif
SETIT
(
m_parameters
.
type
,
type
);
}
bool
BreakpointData
::
isLocatedAt
(
const
QString
&
fileName
,
int
lineNumber
,
bool
useMarkerPosition
)
const
bool
BreakpointData
::
setCondition
(
const
QByteArray
&
cond
)
{
int
line
=
useMarkerPosition
?
m_markerLineNumber
:
m_parameters
.
lineNumber
;
return
lineNumber
==
line
&&
fileNameMatch
(
fileName
,
m_markerFileName
);
SETIT
(
m_parameters
.
condition
,
cond
);
}
#undef SETIT
bool
BreakpointData
::
conditionsMatch
(
const
QByteArray
&
other
)
const
{
// Some versions of gdb "beautify" the passed condition.
...
...
src/plugins/debugger/breakpoint.h
View file @
76d2c581
...
...
@@ -37,8 +37,6 @@
namespace
Debugger
{
class
DebuggerEngine
;
typedef
quint64
BreakpointId
;
// FIXME: make Internal.
namespace
Internal
{
...
...
@@ -82,7 +80,8 @@ enum BreakpointState
BreakpointDead
,
};
class
BreakpointParameters
{
class
BreakpointParameters
{
public:
explicit
BreakpointParameters
(
BreakpointType
=
UnknownType
);
bool
equals
(
const
BreakpointParameters
&
rhs
)
const
;
...
...
@@ -113,20 +112,16 @@ private:
friend
QDataStream
&
operator
>>
(
QDataStream
&
stream
,
BreakpointData
&
data
);
public:
explicit
BreakpointData
(
BreakpointType
=
UnknownType
);
explicit
BreakpointData
(
BreakpointType
type
=
UnknownType
);
BreakpointType
type
()
const
{
return
m_parameters
.
type
;
}
quint64
address
()
const
{
return
m_parameters
.
address
;
}
bool
useFullPath
()
const
{
return
m_parameters
.
useFullPath
;
}
QString
toString
()
const
;
bool
isLocatedAt
(
const
QString
&
fileName
,
int
lineNumber
,
bool
useMarkerPosition
)
const
;
bool
conditionsMatch
(
const
QByteArray
&
other
)
const
;
QString
functionName
()
const
{
return
m_parameters
.
functionName
;
}
QString
markerFileName
()
const
{
return
m_markerFileName
;
}
QString
fileName
()
const
{
return
m_parameters
.
fileName
;
}
int
markerLineNumber
()
const
{
return
m_markerLineNumber
;
}
int
lineNumber
()
const
{
return
m_parameters
.
lineNumber
;
}
int
ignoreCount
()
const
{
return
m_parameters
.
ignoreCount
;
}
bool
isEnabled
()
const
{
return
m_parameters
.
enabled
;
}
...
...
@@ -155,8 +150,6 @@ private:
private:
// This "user requested information" will get stored in the session.
BreakpointParameters
m_parameters
;
QString
m_markerFileName
;
// Used to locate the marker.
int
m_markerLineNumber
;
public:
Q_DECLARE_TR_FUNCTIONS
(
BreakHandler
)
...
...
src/plugins/debugger/gdb/gdbengine.cpp
View file @
76d2c581
...
...
@@ -2686,7 +2686,7 @@ void GdbEngine::removeBreakpoint(BreakpointId id)
handler
->
setState
(
id
,
BreakpointRemoveProceeding
);
BreakpointResponse
br
=
handler
->
response
(
id
);
showMessage
(
_
(
"DELETING BP %1 IN "
).
arg
(
br
.
number
)
+
handler
->
markerF
ileName
(
id
));
+
handler
->
f
ileName
(
id
));
postCommand
(
"-break-delete "
+
QByteArray
::
number
(
br
.
number
),
NeedsStop
|
RebuildBreakpointModel
);
// Pretend it succeeds without waiting for response. Feels better.
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new 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