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
Tobias Hunger
qt-creator
Commits
46647f49
Commit
46647f49
authored
Jan 11, 2011
by
Friedemann Kleint
Browse files
Debugger[New CDB]: Move from namespace Cdb to Internal.
parent
e8204215
Changes
15
Hide whitespace changes
Inline
Side-by-side
src/plugins/debugger/cdb2/bytearrayinputstream.cpp
View file @
46647f49
...
...
@@ -34,7 +34,7 @@
#include
"bytearrayinputstream.h"
namespace
Debugger
{
namespace
Cdb
{
namespace
Internal
{
ByteArrayInputStream
::
ByteArrayInputStream
(
QByteArray
&
ba
)
:
m_target
(
ba
),
m_integerBase
(
10
),
m_hexPrefix
(
false
),
m_width
(
0
)
...
...
@@ -122,5 +122,5 @@ QByteArray simplify(const QByteArray &inIn)
return
in
;
}
}
// namespace
Cdb
}
// namespace
Internal
}
// namespace Debugger
src/plugins/debugger/cdb2/bytearrayinputstream.h
View file @
46647f49
...
...
@@ -38,7 +38,7 @@
#include
<QtCore/QString>
namespace
Debugger
{
namespace
Cdb
{
namespace
Internal
{
class
ByteArrayInputStream
{
...
...
@@ -106,7 +106,7 @@ QByteArray trimFront(QByteArray in);
QByteArray
trimBack
(
QByteArray
in
);
QByteArray
simplify
(
const
QByteArray
&
inIn
);
}
// namespace
Cdb
}
// namespace
Internal
}
// namespace Debugger
#endif // BYTEARRAYINPUTSTREAM_H
src/plugins/debugger/cdb2/cdbengine2.cpp
View file @
46647f49
...
...
@@ -120,7 +120,7 @@ using namespace ProjectExplorer;
using
namespace
Debugger
::
Internal
;
namespace
Debugger
{
namespace
Cdb
{
namespace
Internal
{
static
const
char
localsPrefixC
[]
=
"local."
;
...
...
@@ -143,14 +143,14 @@ struct SourceLocationCookie {
int
lineNumber
;
};
}
// namespace
Cdb
}
// namespace
Internal
}
// namespace Debugger
Q_DECLARE_METATYPE
(
Debugger
::
Cdb
::
MemoryViewCookie
)
Q_DECLARE_METATYPE
(
Debugger
::
Cdb
::
SourceLocationCookie
)
Q_DECLARE_METATYPE
(
Debugger
::
Internal
::
MemoryViewCookie
)
Q_DECLARE_METATYPE
(
Debugger
::
Internal
::
SourceLocationCookie
)
namespace
Debugger
{
namespace
Cdb
{
namespace
Internal
{
// Base data structure for command queue entries with callback
struct
CdbCommandBase
...
...
@@ -408,8 +408,8 @@ void CdbEngine::setToolTipExpression(const QPoint &mousePos, TextEditor::ITextEd
void
CdbEngine
::
setupEngine
()
{
// Nag to add symbol server
if
(
Debugger
::
Internal
::
CdbSymbolPathListEditor
::
promptToAddSymbolServer
(
CdbOptions
::
settingsGroup
(),
&
(
m_options
->
symbolPaths
)))
if
(
CdbSymbolPathListEditor
::
promptToAddSymbolServer
(
CdbOptions
::
settingsGroup
(),
&
(
m_options
->
symbolPaths
)))
m_options
->
toSettings
(
Core
::
ICore
::
instance
()
->
settings
());
QString
errorMessage
;
...
...
@@ -695,8 +695,8 @@ void CdbEngine::detachDebugger()
postCommand
(
".detach"
,
0
);
}
void
CdbEngine
::
updateWatchData
(
const
Debugger
::
Internal
::
WatchData
&
dataIn
,
const
Debugger
::
Internal
::
WatchUpdateFlags
&
flags
)
void
CdbEngine
::
updateWatchData
(
const
WatchData
&
dataIn
,
const
WatchUpdateFlags
&
flags
)
{
if
(
debug
)
qDebug
(
"CdbEngine::updateWatchData() %dms %s incr=%d: %s"
,
...
...
@@ -705,7 +705,7 @@ void CdbEngine::updateWatchData(const Debugger::Internal::WatchData &dataIn,
qPrintable
(
dataIn
.
toString
()));
if
(
!
dataIn
.
hasChildren
)
{
Debugger
::
Internal
::
WatchData
data
=
dataIn
;
WatchData
data
=
dataIn
;
data
.
setAllUnneeded
();
watchHandler
()
->
insertData
(
data
);
return
;
...
...
@@ -812,7 +812,7 @@ void CdbEngine::doInterruptInferior(SpecialStopMode sm)
const
SpecialStopMode
oldSpecialMode
=
m_specialStopMode
;
m_specialStopMode
=
sm
;
QString
errorMessage
;
if
(
!
Debugger
::
Internal
::
winDebugBreakProcess
(
m_inferiorPid
,
&
errorMessage
))
{
if
(
!
winDebugBreakProcess
(
m_inferiorPid
,
&
errorMessage
))
{
m_specialStopMode
=
oldSpecialMode
;
showMessage
(
errorMessage
,
LogError
);
}
...
...
@@ -824,7 +824,7 @@ void CdbEngine::doInterruptInferior(SpecialStopMode sm)
void
CdbEngine
::
executeRunToLine
(
const
QString
&
fileName
,
int
lineNumber
)
{
// Add one-shot breakpoint
Debugger
::
Internal
::
BreakpointParameters
bp
(
Debugger
::
Internal
::
BreakpointByFileAndLine
);
BreakpointParameters
bp
(
BreakpointByFileAndLine
);
bp
.
fileName
=
fileName
;
bp
.
lineNumber
=
lineNumber
;
postCommand
(
cdbAddBreakpointCommand
(
bp
,
true
),
0
);
...
...
@@ -834,7 +834,7 @@ void CdbEngine::executeRunToLine(const QString &fileName, int lineNumber)
void
CdbEngine
::
executeRunToFunction
(
const
QString
&
functionName
)
{
// Add one-shot breakpoint
Debugger
::
Internal
::
BreakpointParameters
bp
(
Debugger
::
Internal
::
BreakpointByFunction
);
BreakpointParameters
bp
(
BreakpointByFunction
);
bp
.
functionName
=
functionName
;
postCommand
(
cdbAddBreakpointCommand
(
bp
,
true
),
0
);
...
...
@@ -843,7 +843,7 @@ void CdbEngine::executeRunToFunction(const QString &functionName)
void
CdbEngine
::
setRegisterValue
(
int
regnr
,
const
QString
&
value
)
{
const
Debugger
::
Internal
::
Registers
registers
=
registerHandler
()
->
registers
();
const
Registers
registers
=
registerHandler
()
->
registers
();
QTC_ASSERT
(
regnr
<
registers
.
size
(),
return
)
// Value is decimal or 0x-hex-prefixed
QByteArray
cmd
;
...
...
@@ -885,7 +885,7 @@ void CdbEngine::handleJumpToLineAddressResolution(const CdbBuiltinCommandPtr &cm
gotoLocation
(
Location
(
cookie
.
fileName
,
cookie
.
lineNumber
));
}
void
CdbEngine
::
assignValueInDebugger
(
const
Debugger
::
Internal
::
WatchData
*
w
,
const
QString
&
expr
,
const
QVariant
&
value
)
void
CdbEngine
::
assignValueInDebugger
(
const
WatchData
*
w
,
const
QString
&
expr
,
const
QVariant
&
value
)
{
if
(
debug
)
qDebug
()
<<
"CdbEngine::assignValueInDebugger"
<<
w
->
iname
<<
expr
<<
value
;
...
...
@@ -907,10 +907,10 @@ void CdbEngine::handleThreads(const CdbExtensionCommandPtr &reply)
if
(
debug
)
qDebug
(
"CdbEngine::handleThreads success=%d"
,
reply
->
success
);
if
(
reply
->
success
)
{
Debugger
::
Internal
::
GdbMi
data
;
GdbMi
data
;
data
.
fromString
(
reply
->
reply
);
int
currentThreadId
;
Debugger
::
Internal
::
Threads
threads
=
Debugger
::
Internal
::
ThreadsHandler
::
parseGdbmiThreads
(
data
,
&
currentThreadId
);
Threads
threads
=
ThreadsHandler
::
parseGdbmiThreads
(
data
,
&
currentThreadId
);
threadsHandler
()
->
setThreads
(
threads
);
threadsHandler
()
->
setCurrentThreadId
(
currentThreadId
);
// Continue sequence
...
...
@@ -1016,7 +1016,7 @@ void CdbEngine::activateFrame(int index)
// TODO: assembler,etc
if
(
index
<
0
)
return
;
const
Debugger
::
Internal
::
StackFrames
&
frames
=
stackHandler
()
->
frames
();
const
StackFrames
&
frames
=
stackHandler
()
->
frames
();
QTC_ASSERT
(
index
<
frames
.
size
(),
return
;
)
const
StackFrame
frame
=
frames
.
at
(
index
);
...
...
@@ -1086,28 +1086,28 @@ void CdbEngine::selectThread(int index)
postBuiltinCommand
(
cmd
,
0
,
&
CdbEngine
::
dummyHandler
,
CommandListStack
);
}
void
CdbEngine
::
fetchDisassembler
(
Debugger
::
Internal
::
DisassemblerAgent
*
agent
)
void
CdbEngine
::
fetchDisassembler
(
DisassemblerAgent
*
agent
)
{
QTC_ASSERT
(
m_accessible
,
return
;)
QByteArray
cmd
;
ByteArrayInputStream
str
(
cmd
);
str
<<
"u "
<<
hex
<<
hexPrefixOn
<<
agent
->
address
()
<<
" L40"
;
const
QVariant
cookie
=
qVariantFromValue
<
Debugger
::
Internal
::
DisassemblerAgent
*>
(
agent
);
const
QVariant
cookie
=
qVariantFromValue
<
DisassemblerAgent
*>
(
agent
);
postBuiltinCommand
(
cmd
,
0
,
&
CdbEngine
::
handleDisassembler
,
0
,
cookie
);
}
// Parse: "00000000`77606060 cc int 3"
void
CdbEngine
::
handleDisassembler
(
const
CdbBuiltinCommandPtr
&
command
)
{
QTC_ASSERT
(
qVariantCanConvert
<
Debugger
::
Internal
::
DisassemblerAgent
*>
(
command
->
cookie
),
return
;)
Debugger
::
Internal
::
DisassemblerAgent
*
agent
=
qvariant_cast
<
Debugger
::
Internal
::
DisassemblerAgent
*>
(
command
->
cookie
);
QTC_ASSERT
(
qVariantCanConvert
<
DisassemblerAgent
*>
(
command
->
cookie
),
return
;)
DisassemblerAgent
*
agent
=
qvariant_cast
<
DisassemblerAgent
*>
(
command
->
cookie
);
DisassemblerLines
disassemblerLines
;
foreach
(
const
QByteArray
&
line
,
command
->
reply
)
disassemblerLines
.
appendLine
(
DisassemblerLine
(
QString
::
fromLatin1
(
line
)));
agent
->
setContents
(
disassemblerLines
);
}
void
CdbEngine
::
fetchMemory
(
Debugger
::
Internal
::
MemoryAgent
*
agent
,
QObject
*
editor
,
quint64
addr
,
quint64
length
)
void
CdbEngine
::
fetchMemory
(
MemoryAgent
*
agent
,
QObject
*
editor
,
quint64
addr
,
quint64
length
)
{
if
(
!
m_accessible
)
{
qWarning
(
"Internal error: Attempt to read memory from inaccessible session: %s"
,
Q_FUNC_INFO
);
...
...
@@ -1185,12 +1185,12 @@ void CdbEngine::handlePid(const CdbExtensionCommandPtr &reply)
}
// Parse CDB gdbmi register syntax
static
inline
Debugger
::
Internal
::
Register
parseRegister
(
const
Debugger
::
Internal
::
GdbMi
&
gdbmiReg
)
static
inline
Register
parseRegister
(
const
GdbMi
&
gdbmiReg
)
{
Debugger
::
Internal
::
Register
reg
;
Register
reg
;
reg
.
name
=
gdbmiReg
.
findChild
(
"name"
).
data
();
const
Debugger
::
Internal
::
GdbMi
description
=
gdbmiReg
.
findChild
(
"description"
);
if
(
description
.
type
()
!=
Debugger
::
Internal
::
GdbMi
::
Invalid
)
{
const
GdbMi
description
=
gdbmiReg
.
findChild
(
"description"
);
if
(
description
.
type
()
!=
GdbMi
::
Invalid
)
{
reg
.
name
+=
" ("
;
reg
.
name
+=
description
.
data
();
reg
.
name
+=
')'
;
...
...
@@ -1202,19 +1202,19 @@ static inline Debugger::Internal::Register parseRegister(const Debugger::Interna
void
CdbEngine
::
handleModules
(
const
CdbExtensionCommandPtr
&
reply
)
{
if
(
reply
->
success
)
{
Debugger
::
Internal
::
GdbMi
value
;
GdbMi
value
;
value
.
fromString
(
reply
->
reply
);
if
(
value
.
type
()
==
Debugger
::
Internal
::
GdbMi
::
List
)
{
Debugger
::
Internal
::
Modules
modules
;
if
(
value
.
type
()
==
GdbMi
::
List
)
{
Modules
modules
;
modules
.
reserve
(
value
.
childCount
());
foreach
(
const
Debugger
::
Internal
::
GdbMi
&
gdbmiModule
,
value
.
children
())
{
Debugger
::
Internal
::
Module
module
;
foreach
(
const
GdbMi
&
gdbmiModule
,
value
.
children
())
{
Module
module
;
module
.
moduleName
=
QString
::
fromAscii
(
gdbmiModule
.
findChild
(
"name"
).
data
());
module
.
modulePath
=
QString
::
fromAscii
(
gdbmiModule
.
findChild
(
"image"
).
data
());
module
.
startAddress
=
gdbmiModule
.
findChild
(
"start"
).
data
().
toULongLong
(
0
,
0
);
module
.
endAddress
=
gdbmiModule
.
findChild
(
"end"
).
data
().
toULongLong
(
0
,
0
);
if
(
gdbmiModule
.
findChild
(
"deferred"
).
type
()
==
Debugger
::
Internal
::
GdbMi
::
Invalid
)
module
.
symbolsRead
=
Debugger
::
Internal
::
Module
::
ReadOk
;
if
(
gdbmiModule
.
findChild
(
"deferred"
).
type
()
==
GdbMi
::
Invalid
)
module
.
symbolsRead
=
Module
::
ReadOk
;
modules
.
push_back
(
module
);
}
modulesHandler
()
->
setModules
(
modules
);
...
...
@@ -1233,12 +1233,12 @@ void CdbEngine::handleModules(const CdbExtensionCommandPtr &reply)
void
CdbEngine
::
handleRegisters
(
const
CdbExtensionCommandPtr
&
reply
)
{
if
(
reply
->
success
)
{
Debugger
::
Internal
::
GdbMi
value
;
GdbMi
value
;
value
.
fromString
(
reply
->
reply
);
if
(
value
.
type
()
==
Debugger
::
Internal
::
GdbMi
::
List
)
{
Debugger
::
Internal
::
Registers
registers
;
if
(
value
.
type
()
==
GdbMi
::
List
)
{
Registers
registers
;
registers
.
reserve
(
value
.
childCount
());
foreach
(
const
Debugger
::
Internal
::
GdbMi
&
gdbmiReg
,
value
.
children
())
foreach
(
const
GdbMi
&
gdbmiReg
,
value
.
children
())
registers
.
push_back
(
parseRegister
(
gdbmiReg
));
registerHandler
()
->
setRegisters
(
registers
);
}
else
{
...
...
@@ -1255,7 +1255,7 @@ void CdbEngine::handleRegisters(const CdbExtensionCommandPtr &reply)
void
CdbEngine
::
handleLocals
(
const
CdbExtensionCommandPtr
&
reply
)
{
if
(
reply
->
success
)
{
QList
<
Debugger
::
Internal
::
WatchData
>
watchData
;
QList
<
WatchData
>
watchData
;
GdbMi
root
;
root
.
fromString
(
reply
->
reply
);
QTC_ASSERT
(
root
.
isList
(),
return
;
)
...
...
@@ -1274,7 +1274,7 @@ void CdbEngine::handleLocals(const CdbExtensionCommandPtr &reply)
if
(
debugLocals
)
{
QDebug
nsp
=
qDebug
().
nospace
();
nsp
<<
"Obtained "
<<
watchData
.
size
()
<<
" items:
\n
"
;
foreach
(
const
Debugger
::
Internal
::
WatchData
&
wd
,
watchData
)
foreach
(
const
WatchData
&
wd
,
watchData
)
nsp
<<
wd
.
toString
()
<<
'\n'
;
}
}
else
{
...
...
@@ -1394,7 +1394,7 @@ void CdbEngine::handleSessionIdle(const QByteArray &message)
sequence
|=
CommandListModules
;
postCommandSequence
(
sequence
);
// Report stop reason (GDBMI)
Debugger
::
Internal
::
GdbMi
stopReason
;
GdbMi
stopReason
;
stopReason
.
fromString
(
message
);
if
(
debug
)
qDebug
(
"%s"
,
stopReason
.
toString
(
true
,
4
).
constData
());
...
...
@@ -1407,7 +1407,7 @@ void CdbEngine::handleSessionIdle(const QByteArray &message)
if
(
reason
==
"breakpoint"
)
{
const
int
number
=
stopReason
.
findChild
(
"breakpointId"
).
data
().
toInt
();
const
BreakpointId
id
=
breakHandler
()
->
findBreakpointByNumber
(
number
);
if
(
id
&&
breakHandler
()
->
type
(
id
)
==
Debugger
::
Internal
::
Watchpoint
)
{
if
(
id
&&
breakHandler
()
->
type
(
id
)
==
Watchpoint
)
{
showStatusMessage
(
msgWatchpointTriggered
(
id
,
number
,
breakHandler
()
->
address
(
id
),
QString
::
number
(
threadId
)));
}
else
{
showStatusMessage
(
msgBreakpointTriggered
(
id
,
number
,
QString
::
number
(
threadId
)));
...
...
@@ -1422,7 +1422,7 @@ void CdbEngine::handleSessionIdle(const QByteArray &message)
// pulls DLLs. Avoid showing a 'stopped' Message box.
if
(
exception
.
exceptionCode
==
winExceptionStartupCompleteTrap
)
return
;
if
(
Debugger
::
Internal
::
isDebuggerWinException
(
exception
.
exceptionCode
))
{
if
(
isDebuggerWinException
(
exception
.
exceptionCode
))
{
showStatusMessage
(
msgInterrupted
());
return
;
}
...
...
@@ -1572,13 +1572,13 @@ void CdbEngine::handleExtensionMessage(char t, int token, const QByteArray &what
if
(
what
==
"exception"
)
{
WinException
exception
;
Debugger
::
Internal
::
GdbMi
gdbmi
;
GdbMi
gdbmi
;
gdbmi
.
fromString
(
message
);
exception
.
fromGdbMI
(
gdbmi
);
const
QString
message
=
exception
.
toString
(
true
);
showStatusMessage
(
message
);
#ifdef Q_OS_WIN // Report C++ exception in application output as well.
if
(
exception
.
exceptionCode
==
Debugger
::
Internal
::
winExceptionCppException
)
if
(
exception
.
exceptionCode
==
winExceptionCppException
)
showMessage
(
message
+
QLatin1Char
(
'\n'
),
AppOutput
);
#endif
return
;
...
...
@@ -1735,11 +1735,11 @@ void CdbEngine::processError()
#if 0
// Join breakpoint ids for a multi-breakpoint id commands like 'bc', 'be', 'bd'
static QByteArray multiBreakpointCommand(const char *cmdC, const
Debugger::Internal::
Breakpoints &bps)
static QByteArray multiBreakpointCommand(const char *cmdC, const Breakpoints &bps)
{
QByteArray cmd(cmdC);
ByteArrayInputStream str(cmd);
foreach(const
Debugger::Internal::
BreakpointData *bp, bps)
foreach(const BreakpointData *bp, bps)
str << ' ' << bp->bpNumber;
return cmd;
}
...
...
@@ -1984,5 +1984,5 @@ void CdbEngine::postCommandSequence(unsigned mask)
}
}
}
// namespace
Cdb
}
// namespace
Internal
}
// namespace Debugger
src/plugins/debugger/cdb2/cdbengine2.h
View file @
46647f49
...
...
@@ -43,7 +43,7 @@
#include
<QtCore/QTime>
namespace
Debugger
{
namespace
Cdb
{
namespace
Internal
{
class
DisassemblerAgent
;
struct
CdbBuiltinCommand
;
...
...
@@ -83,8 +83,8 @@ public:
virtual
void
shutdownInferior
();
virtual
void
shutdownEngine
();
virtual
void
detachDebugger
();
virtual
void
updateWatchData
(
const
Debugger
::
Internal
::
WatchData
&
data
,
const
Debugger
::
Internal
::
WatchUpdateFlags
&
flags
=
Debugger
::
Internal
::
WatchUpdateFlags
());
virtual
void
updateWatchData
(
const
WatchData
&
data
,
const
WatchUpdateFlags
&
flags
=
WatchUpdateFlags
());
virtual
unsigned
debuggerCapabilities
()
const
;
virtual
void
setRegisterValue
(
int
regnr
,
const
QString
&
value
);
...
...
@@ -100,7 +100,7 @@ public:
virtual
void
executeRunToLine
(
const
QString
&
fileName
,
int
lineNumber
);
virtual
void
executeRunToFunction
(
const
QString
&
functionName
);
virtual
void
executeJumpToLine
(
const
QString
&
fileName
,
int
lineNumber
);
virtual
void
assignValueInDebugger
(
const
Debugger
::
Internal
::
WatchData
*
w
,
const
QString
&
expr
,
const
QVariant
&
value
);
virtual
void
assignValueInDebugger
(
const
WatchData
*
w
,
const
QString
&
expr
,
const
QVariant
&
value
);
virtual
void
executeDebuggerCommand
(
const
QString
&
command
);
virtual
void
activateFrame
(
int
index
);
...
...
@@ -110,8 +110,8 @@ public:
virtual
bool
acceptsBreakpoint
(
BreakpointId
id
)
const
;
virtual
void
attemptBreakpointSynchronization
();
virtual
void
fetchDisassembler
(
Debugger
::
Internal
::
DisassemblerAgent
*
agent
);
virtual
void
fetchMemory
(
Debugger
::
Internal
::
MemoryAgent
*
,
QObject
*
,
quint64
addr
,
quint64
length
);
virtual
void
fetchDisassembler
(
DisassemblerAgent
*
agent
);
virtual
void
fetchMemory
(
MemoryAgent
*
,
QObject
*
,
quint64
addr
,
quint64
length
);
virtual
void
reloadModules
();
virtual
void
loadSymbols
(
const
QString
&
moduleName
);
...
...
@@ -209,7 +209,7 @@ private:
bool
m_sourceStepInto
;
};
}
// namespace
Cdb
}
// namespace
Internal
}
// namespace Debugger
#endif // DEBUGGER_CDBENGINE_H
src/plugins/debugger/cdb2/cdboptions2.cpp
View file @
46647f49
...
...
@@ -52,7 +52,7 @@ static const char breakEventKeyC[] = "BreakEvent";
static
const
char
is64bitKeyC
[]
=
"64bit"
;
namespace
Debugger
{
namespace
Cdb
{
namespace
Internal
{
CdbOptions
::
CdbOptions
()
:
enabled
(
false
),
is64bit
(
false
)
...
...
src/plugins/debugger/cdb2/cdboptions2.h
View file @
46647f49
...
...
@@ -41,7 +41,7 @@ class QSettings;
QT_END_NAMESPACE
namespace
Debugger
{
namespace
Cdb
{
namespace
Internal
{
struct
CdbOptions
{
...
...
src/plugins/debugger/cdb2/cdboptionspage2.cpp
View file @
46647f49
...
...
@@ -59,7 +59,7 @@ static const char *dgbToolsDownloadLink32C = "http://www.microsoft.com/whdc/devt
static
const
char
*
dgbToolsDownloadLink64C
=
"http://www.microsoft.com/whdc/devtools/debugging/install64bit.Mspx"
;
namespace
Debugger
{
namespace
Cdb
{
namespace
Internal
{
struct
EventsDescription
{
const
char
*
abbreviation
;
...
...
src/plugins/debugger/cdb2/cdboptionspage2.h
View file @
46647f49
...
...
@@ -48,7 +48,7 @@ class QTimer;
QT_END_NAMESPACE
namespace
Debugger
{
namespace
Cdb
{
namespace
Internal
{
// Widget displaying a list of break events for the 'sxe' command
// with a checkbox to enable 'break' and optionally a QLineEdit for
...
...
src/plugins/debugger/cdb2/cdboptionspagewidget2.ui
View file @
46647f49
<?xml version="1.0" encoding="UTF-8"?>
<ui
version=
"4.0"
>
<class>
Debugger::
Cdb
::CdbOptionsPageWidget2
</class>
<class>
Debugger::
Internal
::CdbOptionsPageWidget2
</class>
<widget
class=
"QWidget"
name=
"Debugger::Cdb::CdbOptionsPageWidget2"
>
<property
name=
"geometry"
>
<rect>
...
...
src/plugins/debugger/cdb2/cdbparsehelpers.cpp
View file @
46647f49
...
...
@@ -51,15 +51,15 @@
#include
<cctype>
namespace
Debugger
{
namespace
Cdb
{
namespace
Internal
{
// Convert breakpoint in CDB syntax.
QByteArray
cdbAddBreakpointCommand
(
const
Debugger
::
Internal
::
BreakpointParameters
&
bpIn
,
bool
oneshot
,
int
id
)
QByteArray
cdbAddBreakpointCommand
(
const
BreakpointParameters
&
bpIn
,
bool
oneshot
,
int
id
)
{
#ifdef Q_OS_WIN
const
Debugger
::
Internal
::
BreakpointParameters
bp
=
Debugger
::
Internal
::
fixWinMSVCBreakpoint
(
bpIn
);
const
BreakpointParameters
bp
=
fixWinMSVCBreakpoint
(
bpIn
);
#else
const
Debugger
::
Internal
::
BreakpointParameters
bp
=
bpIn
;
const
BreakpointParameters
bp
=
bpIn
;
#endif
QByteArray
rc
;
...
...
@@ -68,29 +68,29 @@ QByteArray cdbAddBreakpointCommand(const Debugger::Internal::BreakpointParameter
if
(
bp
.
threadSpec
>=
0
)
str
<<
'~'
<<
bp
.
threadSpec
<<
' '
;
str
<<
(
bp
.
type
==
Debugger
::
Internal
::
Watchpoint
?
"ba"
:
"bp"
);
str
<<
(
bp
.
type
==
Watchpoint
?
"ba"
:
"bp"
);
if
(
id
>=
0
)
str
<<
id
;
str
<<
' '
;
if
(
oneshot
)
str
<<
"/1 "
;
switch
(
bp
.
type
)
{
case
Debugger
::
Internal
::
UnknownType
:
case
Debugger
::
Internal
::
BreakpointAtCatch
:
case
Debugger
::
Internal
::
BreakpointAtThrow
:
case
Debugger
::
Internal
::
BreakpointAtMain
:
case
UnknownType
:
case
BreakpointAtCatch
:
case
BreakpointAtThrow
:
case
BreakpointAtMain
:
QTC_ASSERT
(
false
,
return
QByteArray
();
)
break
;
case
Debugger
::
Internal
::
BreakpointByAddress
:
case
BreakpointByAddress
:
str
<<
hex
<<
hexPrefixOn
<<
bp
.
address
<<
hexPrefixOff
<<
dec
;
break
;
case
Debugger
::
Internal
::
BreakpointByFunction
:
case
BreakpointByFunction
:
str
<<
bp
.
functionName
;
break
;
case
Debugger
::
Internal
::
BreakpointByFileAndLine
:
case
BreakpointByFileAndLine
:
str
<<
'`'
<<
QDir
::
toNativeSeparators
(
bp
.
fileName
)
<<
':'
<<
bp
.
lineNumber
<<
'`'
;
break
;
case
Debugger
::
Internal
::
Watchpoint
:
case
Watchpoint
:
str
<<
"rw 1 "
<<
hex
<<
hexPrefixOn
<<
bp
.
address
<<
hexPrefixOff
<<
dec
;
break
;
}
...
...
@@ -147,7 +147,7 @@ QVariant cdbIntegerValue(const QByteArray &t)
3 Id: 133c.38c Suspend: 1 Teb: 000007ff`fffd7000 Unfrozen "QThread"
\endcode */
static
inline
bool
parseThread
(
QByteArray
line
,
Debugger
::
Internal
::
ThreadData
*
thread
,
bool
*
current
)
static
inline
bool
parseThread
(
QByteArray
line
,
ThreadData
*
thread
,
bool
*
current
)
{
*
current
=
false
;
if
(
line
.
size
()
<
5
)
...
...
@@ -223,20 +223,20 @@ WinException::WinException() :
{
}
void
WinException
::
fromGdbMI
(
const
Debugger
::
Internal
::
GdbMi
&
gdbmi
)
void
WinException
::
fromGdbMI
(
const
GdbMi
&
gdbmi
)
{
exceptionCode
=
gdbmi
.
findChild
(
"exceptionCode"
).
data
().
toUInt
();
exceptionFlags
=
gdbmi
.
findChild
(
"exceptionFlags"
).
data
().
toUInt
();
exceptionAddress
=
gdbmi
.
findChild
(
"exceptionAddress"
).
data
().
toULongLong
();
firstChance
=
gdbmi
.
findChild
(
"firstChance"
).
data
()
!=
"0"
;
const
Debugger
::
Internal
::
GdbMi
ginfo1
=
gdbmi
.
findChild
(
"exceptionInformation0"
);
const
GdbMi
ginfo1
=
gdbmi
.
findChild
(
"exceptionInformation0"
);
if
(
ginfo1
.
isValid
())
{
info1
=
ginfo1
.
data
().
toULongLong
();
const
Debugger
::
Internal
::
GdbMi
ginfo2
=
gdbmi
.
findChild
(
"exceptionInformation1"
);
const
GdbMi
ginfo2
=
gdbmi
.
findChild
(
"exceptionInformation1"
);
if
(
ginfo2
.
isValid
())
info2
=
ginfo1
.
data
().
toULongLong
();
}
const
Debugger
::
Internal
::
GdbMi
gLineNumber
=
gdbmi
.
findChild
(
"exceptionLine"
);
const
GdbMi
gLineNumber
=
gdbmi
.
findChild
(
"exceptionLine"
);
if
(
gLineNumber
.
isValid
())
{
lineNumber
=
gLineNumber
.
data
().
toInt
();
file
=
gdbmi
.
findChild
(
"exceptionFile"
).
data
();
...
...
@@ -249,8 +249,8 @@ QString WinException::toString(bool includeLocation) const
QString
rc
;
QTextStream
str
(
&
rc
);
#ifdef Q_OS_WIN
Debugger
::
Internal
::
formatWindowsException
(
exceptionCode
,
exceptionAddress
,
exceptionFlags
,
info1
,
info2
,
str
);
formatWindowsException
(
exceptionCode
,
exceptionAddress
,
exceptionFlags
,
info1
,
info2
,
str
);
#endif
if
(
includeLocation
)
{
if
(
lineNumber
)
{
...
...
@@ -272,5 +272,5 @@ QDebug operator<<(QDebug s, const WinException &e)
return
s
;
}
}
// namespace
Cdb
}
// namespace
Internal
}
// namespace Debugger
src/plugins/debugger/cdb2/cdbparsehelpers.h
View file @
46647f49
...
...
@@ -51,12 +51,9 @@ class BreakpointParameters;
struct
ThreadData
;
class
Register
;
class
GdbMi
;
}
// namespace Internal
namespace
Cdb
{
// Convert breakpoint in CDB syntax.
QByteArray
cdbAddBreakpointCommand
(
const
Debugger
::
Internal
::
BreakpointParameters
&
d
,
bool
oneshot
=
false
,
int
id
=
-
1
);
QByteArray
cdbAddBreakpointCommand
(
const
BreakpointParameters
&
d
,
bool
oneshot
=
false
,
int
id
=
-
1
);
// Convert a CDB integer value: '00000000`0012a290' -> '12a290', '0n10' ->'10'
QByteArray
fixCdbIntegerValue
(
QByteArray
t
,
bool
stripLeadingZeros
=
false
,
int
*
basePtr
=
0
);
...
...
@@ -70,7 +67,7 @@ QString StringFromBase64EncodedUtf16(const QByteArray &a);
struct
WinException
{
WinException
();
void
fromGdbMI
(
const
Debugger
::
Internal
::
GdbMi
&
);
void
fromGdbMI
(
const
GdbMi
&
);
QString
toString
(
bool
includeLocation
=
false
)
const
;
unsigned
exceptionCode
;
...
...
@@ -86,7 +83,7 @@ struct WinException
QDebug
operator
<<
(
QDebug
s
,
const
WinException
&
e
);
}
// namespace
Cdb
}
// namespace
Internal
}
// namespace Debugger
#endif // CDBPARSEHELPERS_H
src/plugins/debugger/debuggerdialogs.cpp
View file @
46647f49
...
...
@@ -767,8 +767,8 @@ static inline QString cdbRemoteHelp()
"ssl:proto=Protocol,{certuser=Cert|machuser=Cert},server=Server,port=Socket[,password=Password]
\n
"
"ssl:proto=Protocol,{certuser=Cert|machuser=Cert},clicon=Server,port=Socket[,password=Password]"
;
const
QString
ext32
=
QDir
::
toNativeSeparators
(
Debugger
::
Cdb
::
CdbEngine
::
extensionLibraryName
(
false
));
const
QString
ext64
=
QDir
::
toNativeSeparators
(
Debugger
::
Cdb
::
CdbEngine
::
extensionLibraryName
(
true
));
const
QString
ext32
=
QDir
::
toNativeSeparators
(
CdbEngine
::
extensionLibraryName
(
false
));
const
QString
ext64
=
QDir
::
toNativeSeparators
(
CdbEngine
::
extensionLibraryName
(
true
));
return
StartRemoteCdbDialog
::
tr
(
"<html><body><p>The remote CDB needs to load the matching Qt Creator CDB extension "
"(<code>%1</code> or <code>%2</code>, respectively).</p><p>Copy it onto the remote machine and set the "
...
...
src/plugins/debugger/debuggerplugin.cpp
View file @
46647f49
...
...
@@ -405,7 +405,7 @@ const char * const SNAPSHOT_KEY = "Ctrl+D,Ctrl+S";
}
// namespace Constants
namespace
Cdb
{
namespace
Internal
{
void
addCdb2OptionPages
(
QList
<
Core
::
IOptionsPage
*>
*
);
}
// namespace Cdb
...
...
@@ -3019,7 +3019,7 @@ void DebuggerPluginPrivate::extensionsInitialized()
if
(
m_cmdLineEnabledEngines
&
GdbEngineType
)
addGdbOptionPages
(
&
engineOptionPages
);
#ifdef Q_OS_WIN
Debugger
::
Cdb
::
addCdb2OptionPages
(
&
engineOptionPages
);