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
179d77fa
Commit
179d77fa
authored
Dec 02, 2010
by
Arvid Ephraim Picciani
Browse files
lldb: have a proper Agent tranfering the sourcecode
parent
09f084b5
Changes
6
Hide whitespace changes
Inline
Side-by-side
src/plugins/debugger/debugger.pro
View file @
179d77fa
...
...
@@ -46,6 +46,7 @@ HEADERS += breakhandler.h \
registerwindow
.
h
\
snapshothandler
.
h
\
snapshotwindow
.
h
\
sourceagent
.
h
\
sourcefileshandler
.
h
\
sourcefileswindow
.
h
\
stackframe
.
h
\
...
...
@@ -85,6 +86,7 @@ SOURCES += breakhandler.cpp \
registerwindow
.
cpp
\
snapshothandler
.
cpp
\
snapshotwindow
.
cpp
\
sourceagent
.
cpp
\
sourcefileshandler
.
cpp
\
sourcefileswindow
.
cpp
\
stackhandler
.
cpp
\
...
...
src/plugins/debugger/debuggerplugin.cpp
View file @
179d77fa
...
...
@@ -2313,9 +2313,6 @@ void DebuggerPluginPrivate::startRemoteEngine()
sp
.
connParams
.
uname
=
dlg
.
username
();
sp
.
connParams
.
pwd
=
dlg
.
password
();
qDebug
()
<<
sp
.
connParams
.
host
<<
sp
.
connParams
.
uname
<<
sp
.
connParams
.
pwd
;
sp
.
connParams
.
timeout
=
5
;
sp
.
connParams
.
authType
=
SshConnectionParameters
::
AuthByPwd
;
sp
.
connParams
.
port
=
22
;
...
...
src/plugins/debugger/lldb/ipcenginehost.cpp
View file @
179d77fa
...
...
@@ -40,9 +40,7 @@
#include
"threadshandler.h"
#include
"debuggeragents.h"
#include
"debuggerstreamops.h"
#include
<coreplugin/editormanager/editormanager.h>
#include
<coreplugin/editormanager/ieditor.h>
#include
<cppeditor/cppeditorconstants.h>
#include
"debuggercore.h"
#include
<QSysInfo>
#include
<QDebug>
...
...
@@ -426,8 +424,10 @@ void IPCEngineHost::rpcCallback(quint64 f, QByteArray payload)
sh
->
setCurrentIndex
(
token
);
if
(
!
sh
->
currentFrame
().
isUsable
()
||
QFileInfo
(
sh
->
currentFrame
().
file
).
exists
())
gotoLocation
(
sh
->
currentFrame
(),
true
);
else
else
if
(
!
m_sourceAgents
.
contains
(
sh
->
currentFrame
().
file
))
fetchFrameSource
(
token
);
foreach
(
SourceAgent
*
agent
,
m_sourceAgents
.
values
())
agent
->
updateLocationMarker
();
}
break
;
case
IPCEngineGuest
::
CurrentThreadChanged
:
...
...
@@ -562,14 +562,14 @@ void IPCEngineHost::rpcCallback(quint64 f, QByteArray payload)
QDataStream
s
(
payload
);
SET_NATIVE_BYTE_ORDER
(
s
);
qint64
token
;
QString
name
;
QString
path
;
QString
source
;
s
>>
token
>>
name
>>
source
;
Core
::
EditorManager
*
editorMan
age
r
=
Core
::
EditorManager
::
instance
(
);
Core
::
IEditor
*
editor
=
editorManager
->
openEditorWithContents
(
CppEditor
::
Constants
::
CPPEDITOR_ID
,
&
name
,
source
);
editorManager
->
activateEditor
(
editor
);
editor
->
gotoLine
(
stackHandler
()
->
currentFrame
().
line
,
0
);
editor
->
setProperty
(
Debugger
::
Constants
::
OPENED_BY_DEBUGGER
,
true
);
s
>>
token
>>
path
>>
source
;
SourceAgent
*
age
nt
=
new
SourceAgent
(
this
);
agent
->
setSourceProducerName
(
startParameters
().
connParams
.
host
);
agent
->
setContent
(
path
,
source
);
m_sourceAgents
.
insert
(
path
,
agent
);
agent
->
updateLocationMarker
(
);
}
break
;
}
...
...
src/plugins/debugger/lldb/ipcenginehost.h
View file @
179d77fa
...
...
@@ -34,6 +34,7 @@
#include
"threadshandler.h"
#include
"stackhandler.h"
#include
"breakhandler.h"
#include
"sourceagent.h"
#include
<QtCore/QQueue>
#include
<QtCore/QVariant>
...
...
@@ -129,6 +130,7 @@ private:
quint64
m_cookie
;
QIODevice
*
m_device
;
QHash
<
quint64
,
DisassemblerViewAgent
*>
m_frameToDisassemblerAgent
;
QHash
<
QString
,
SourceAgent
*>
m_sourceAgents
;
};
}
// namespace Internal
...
...
src/plugins/debugger/sourceagent.cpp
0 → 100644
View file @
179d77fa
/**************************************************************************
**
** This file is part of Qt Creator
**
** Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
**
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** Commercial Usage
**
** Licensees holding valid Qt Commercial licenses may use this file in
** accordance with the Qt Commercial License Agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and Nokia.
**
** GNU Lesser General Public License Usage
**
** Alternatively, this file may be used under the terms of the GNU Lesser
** General Public License version 2.1 as published by the Free Software
** Foundation and appearing in the file LICENSE.LGPL included in the
** packaging of this file. Please review the following information to
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
** If you are unsure which license is appropriate for your use, please
** contact the sales department at http://qt.nokia.com/contact.
**
**************************************************************************/
#include
"sourceagent.h"
#include
"breakhandler.h"
#include
"debuggerengine.h"
#include
"debuggercore.h"
#include
"debuggerstringutils.h"
#include
"stackframe.h"
#include
"stackhandler.h"
#include
<coreplugin/coreconstants.h>
#include
<coreplugin/editormanager/editormanager.h>
#include
<coreplugin/editormanager/ieditor.h>
#include
<coreplugin/mimedatabase.h>
#include
<coreplugin/icore.h>
#include
<texteditor/basetextdocument.h>
#include
<texteditor/basetexteditor.h>
#include
<texteditor/basetextmark.h>
#include
<texteditor/plaintexteditor.h>
#include
<texteditor/texteditorconstants.h>
#include
<cppeditor/cppeditorconstants.h>
#include
<utils/qtcassert.h>
#include
<QtCore/QDebug>
#include
<QtCore/QMetaObject>
#include
<QtCore/QTimer>
#include
<QtGui/QMessageBox>
#include
<QtGui/QPlainTextEdit>
#include
<QtGui/QTextBlock>
#include
<QtGui/QTextCursor>
#include
<QtGui/QIcon>
#include
<limits.h>
using
namespace
Core
;
namespace
Debugger
{
namespace
Internal
{
class
LocationMarkFoo
:
public
TextEditor
::
ITextMark
{
public:
LocationMarkFoo
()
{}
QIcon
icon
()
const
{
return
debuggerCore
()
->
locationMarkIcon
();
}
void
updateLineNumber
(
int
/*lineNumber*/
)
{}
void
updateBlock
(
const
QTextBlock
&
/*block*/
)
{}
void
removedFromEditor
()
{}
void
documentClosing
()
{}
};
class
SourceAgentPrivate
{
public:
SourceAgentPrivate
();
~
SourceAgentPrivate
();
public:
QPointer
<
TextEditor
::
ITextEditor
>
editor
;
QPointer
<
DebuggerEngine
>
engine
;
TextEditor
::
ITextMark
*
locationMark
;
QString
path
;
QString
producer
;
};
SourceAgentPrivate
::
SourceAgentPrivate
()
:
editor
(
0
)
,
locationMark
(
new
LocationMarkFoo
)
,
producer
(
"remote"
)
{
}
SourceAgentPrivate
::~
SourceAgentPrivate
()
{
if
(
editor
)
{
EditorManager
*
editorManager
=
EditorManager
::
instance
();
editorManager
->
closeEditors
(
QList
<
IEditor
*>
()
<<
editor
);
}
editor
=
0
;
delete
locationMark
;
}
SourceAgent
::
SourceAgent
(
DebuggerEngine
*
engine
)
:
QObject
(
0
),
d
(
new
SourceAgentPrivate
)
{
d
->
engine
=
engine
;
}
SourceAgent
::~
SourceAgent
()
{
delete
d
;
d
=
0
;
}
void
SourceAgent
::
setSourceProducerName
(
const
QString
&
name
)
{
d
->
producer
=
name
;
}
void
SourceAgent
::
setContent
(
const
QString
&
filePath
,
const
QString
&
content
)
{
QTC_ASSERT
(
d
,
return
);
using
namespace
Core
;
using
namespace
TextEditor
;
d
->
path
=
filePath
;
EditorManager
*
editorManager
=
EditorManager
::
instance
();
if
(
!
d
->
editor
)
{
QString
titlePattern
=
d
->
producer
+
QLatin1String
(
": "
)
+
QFileInfo
(
filePath
).
fileName
();
d
->
editor
=
qobject_cast
<
ITextEditor
*>
(
editorManager
->
openEditorWithContents
(
CppEditor
::
Constants
::
CPPEDITOR_ID
,
&
titlePattern
,
content
));
QTC_ASSERT
(
d
->
editor
,
return
);
d
->
editor
->
setProperty
(
Debugger
::
Constants
::
OPENED_BY_DEBUGGER
,
true
);
BaseTextEditor
*
baseTextEdit
=
qobject_cast
<
BaseTextEditor
*>
(
d
->
editor
->
widget
());
if
(
baseTextEdit
)
baseTextEdit
->
setRequestMarkEnabled
(
true
);
}
editorManager
->
activateEditor
(
d
->
editor
);
QPlainTextEdit
*
plainTextEdit
=
qobject_cast
<
QPlainTextEdit
*>
(
d
->
editor
->
widget
());
QTC_ASSERT
(
plainTextEdit
,
return
);
plainTextEdit
->
setReadOnly
(
true
);
updateLocationMarker
();
}
void
SourceAgent
::
updateLocationMarker
()
{
QTC_ASSERT
(
d
->
editor
,
return
);
d
->
editor
->
markableInterface
()
->
removeMark
(
d
->
locationMark
);
if
(
d
->
engine
->
stackHandler
()
->
currentFrame
().
file
==
d
->
path
)
{
int
lineNumber
=
d
->
engine
->
stackHandler
()
->
currentFrame
().
line
;
d
->
editor
->
markableInterface
()
->
addMark
(
d
->
locationMark
,
lineNumber
);
QPlainTextEdit
*
plainTextEdit
=
qobject_cast
<
QPlainTextEdit
*>
(
d
->
editor
->
widget
());
QTC_ASSERT
(
plainTextEdit
,
return
);
QTextCursor
tc
=
plainTextEdit
->
textCursor
();
QTextBlock
block
=
tc
.
document
()
->
findBlockByNumber
(
lineNumber
-
1
);
tc
.
setPosition
(
block
.
position
());
plainTextEdit
->
setTextCursor
(
tc
);
EditorManager
*
editorManager
=
EditorManager
::
instance
();
editorManager
->
activateEditor
(
d
->
editor
);
}
}
}
// namespace Internal
}
// namespace Debugger
src/plugins/debugger/sourceagent.h
0 → 100644
View file @
179d77fa
/**************************************************************************
**
** This file is part of Qt Creator
**
** Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
**
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** Commercial Usage
**
** Licensees holding valid Qt Commercial licenses may use this file in
** accordance with the Qt Commercial License Agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and Nokia.
**
** GNU Lesser General Public License Usage
**
** Alternatively, this file may be used under the terms of the GNU Lesser
** General Public License version 2.1 as published by the Free Software
** Foundation and appearing in the file LICENSE.LGPL included in the
** packaging of this file. Please review the following information to
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
** If you are unsure which license is appropriate for your use, please
** contact the sales department at http://qt.nokia.com/contact.
**
**************************************************************************/
#ifndef DEBUGGER_SOURCE_AGENT_H
#define DEBUGGER_SOURCE_AGENT_H
#include
<QtCore/QObject>
#include
<QtCore/QHash>
#include
<QtCore/QPointer>
#include
<QtCore/QVector>
namespace
Debugger
{
class
DebuggerEngine
;
namespace
Internal
{
class
SourceAgentPrivate
;
class
SourceAgent
:
public
QObject
{
public:
explicit
SourceAgent
(
Debugger
::
DebuggerEngine
*
engine
);
~
SourceAgent
();
void
setSourceProducerName
(
const
QString
&
name
);
void
resetLocation
();
void
setContent
(
const
QString
&
name
,
const
QString
&
content
);
void
updateLocationMarker
();
private:
SourceAgentPrivate
*
d
;
};
}
// namespace Internal
}
// namespace Debugger
#endif
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