Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
What's new
10
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Open sidebar
Marco Bubke
flatpak-qt-creator
Commits
3ce54345
Commit
3ce54345
authored
Jul 22, 2010
by
hjk
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
debugger: start attempt to handle dwarf index data
parent
45f15f0e
Changes
7
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
98 additions
and
34 deletions
+98
-34
src/plugins/debugger/debuggerconstants.h
src/plugins/debugger/debuggerconstants.h
+1
-0
src/plugins/debugger/debuggerengine.h
src/plugins/debugger/debuggerengine.h
+1
-0
src/plugins/debugger/gdb/gdbengine.cpp
src/plugins/debugger/gdb/gdbengine.cpp
+21
-0
src/plugins/debugger/gdb/gdbengine.h
src/plugins/debugger/gdb/gdbengine.h
+1
-0
src/plugins/debugger/moduleshandler.cpp
src/plugins/debugger/moduleshandler.cpp
+20
-3
src/plugins/debugger/moduleshandler.h
src/plugins/debugger/moduleshandler.h
+1
-0
src/plugins/debugger/moduleswindow.cpp
src/plugins/debugger/moduleswindow.cpp
+53
-31
No files found.
src/plugins/debugger/debuggerconstants.h
View file @
3ce54345
...
...
@@ -237,6 +237,7 @@ enum ModelRoles
// Modules
RequestReloadModulesRole
,
RequestExamineModulesRole
,
RequestModuleSymbolsRole
,
RequestAllSymbolsRole
,
RequestOpenFileRole
,
...
...
src/plugins/debugger/debuggerengine.h
View file @
3ce54345
...
...
@@ -136,6 +136,7 @@ public:
virtual
void
activateFrame
(
int
index
)
{
Q_UNUSED
(
index
);
}
virtual
void
reloadModules
()
{}
virtual
void
examineModules
()
{}
virtual
void
loadSymbols
(
const
QString
&
moduleName
)
{
Q_UNUSED
(
moduleName
);
}
virtual
void
loadAllSymbols
()
{}
...
...
src/plugins/debugger/gdb/gdbengine.cpp
View file @
3ce54345
...
...
@@ -2672,6 +2672,27 @@ void GdbEngine::handleModulesList(const GdbResponse &response)
}
void
GdbEngine
::
examineModules
()
{
foreach
(
Module
module
,
modulesHandler
()
->
modules
())
{
if
(
module
.
symbolsType
==
Module
::
UnknownType
)
{
QProcess
proc
;
qDebug
()
<<
_
(
"objdump -h
\"
%1
\"
"
).
arg
(
module
.
moduleName
);
proc
.
start
(
_
(
"objdump -h
\"
%1
\"
"
).
arg
(
module
.
moduleName
));
if
(
!
proc
.
waitForStarted
())
continue
;
if
(
!
proc
.
waitForFinished
())
continue
;
QByteArray
ba
=
proc
.
readAllStandardOutput
();
if
(
ba
.
contains
(
".gdb_index"
))
module
.
symbolsType
=
Module
::
FastSymbols
;
else
module
.
symbolsType
=
Module
::
PlainSymbols
;
modulesHandler
()
->
updateModule
(
module
.
moduleName
,
module
);
}
}
}
//////////////////////////////////////////////////////////////////////
//
// Source files specific stuff
...
...
src/plugins/debugger/gdb/gdbengine.h
View file @
3ce54345
...
...
@@ -368,6 +368,7 @@ private: ////////// View & Data Stuff //////////
virtual
void
loadAllSymbols
();
virtual
void
requestModuleSymbols
(
const
QString
&
moduleName
);
virtual
void
reloadModules
();
virtual
void
examineModules
();
void
reloadModulesInternal
();
void
handleModulesList
(
const
GdbResponse
&
response
);
...
...
src/plugins/debugger/moduleshandler.cpp
View file @
3ce54345
...
...
@@ -70,9 +70,10 @@ public:
bool
setData
(
const
QModelIndex
&
index
,
const
QVariant
&
value
,
int
role
);
void
clearModel
();
void
addModule
(
const
Module
&
m
);
void
addModule
(
const
Module
&
m
odule
);
void
removeModule
(
const
QString
&
moduleName
);
void
setModules
(
const
Modules
&
m
);
void
setModules
(
const
Modules
&
modules
);
void
updateModule
(
const
QString
&
moduleName
,
const
Module
&
module
);
const
Modules
&
modules
()
const
{
return
m_modules
;
}
...
...
@@ -167,6 +168,10 @@ bool ModulesModel::setData(const QModelIndex &index, const QVariant &value, int
m_engine
->
reloadModules
();
return
true
;
case
RequestExamineModulesRole
:
m_engine
->
examineModules
();
return
true
;
case
RequestModuleSymbolsRole
:
m_engine
->
loadSymbols
(
value
.
toString
());
return
true
;
...
...
@@ -216,12 +221,19 @@ void ModulesModel::removeModule(const QString &moduleName)
{
const
int
index
=
indexOfModule
(
moduleName
);
QTC_ASSERT
(
index
!=
-
1
,
return
);
beginRemoveRows
(
QModelIndex
(),
index
,
index
);
m_modules
.
removeAt
(
index
);
endRemoveRows
();
}
void
ModulesModel
::
updateModule
(
const
QString
&
moduleName
,
const
Module
&
module
)
{
const
int
index
=
indexOfModule
(
moduleName
);
QTC_ASSERT
(
index
!=
-
1
,
return
);
m_modules
[
index
]
=
module
;
reset
();
}
//////////////////////////////////////////////////////////////////
//
// ModulesHandler
...
...
@@ -255,6 +267,11 @@ void ModulesHandler::removeModule(const QString &moduleName)
m_model
->
removeModule
(
moduleName
);
}
void
ModulesHandler
::
updateModule
(
const
QString
&
moduleName
,
const
Module
&
module
)
{
m_model
->
updateModule
(
moduleName
,
module
);
}
void
ModulesHandler
::
setModules
(
const
Modules
&
modules
)
{
m_model
->
setModules
(
modules
);
...
...
src/plugins/debugger/moduleshandler.h
View file @
3ce54345
...
...
@@ -110,6 +110,7 @@ public:
void
setModules
(
const
Modules
&
modules
);
void
addModule
(
const
Module
&
module
);
void
removeModule
(
const
QString
&
moduleName
);
void
updateModule
(
const
QString
&
moduleName
,
const
Module
&
module
);
Modules
modules
()
const
;
void
removeAll
();
...
...
src/plugins/debugger/moduleswindow.cpp
View file @
3ce54345
...
...
@@ -107,35 +107,55 @@ void ModulesWindow::contextMenuEvent(QContextMenuEvent *ev)
model
()
->
data
(
index
,
EngineCapabilitiesRole
).
toInt
();
QMenu
menu
;
QAction
*
act0
=
new
QAction
(
tr
(
"Update Module List"
),
&
menu
);
act0
->
setEnabled
(
enabled
&&
(
capabilities
&
ReloadModuleCapability
));
QAction
*
act3
=
new
QAction
(
tr
(
"Show Source Files for Module
\"
%1
\"
"
).
arg
(
name
),
&
menu
);
act3
->
setEnabled
(
enabled
&&
(
capabilities
&
ReloadModuleCapability
));
QAction
*
act4
=
new
QAction
(
tr
(
"Load Symbols for All Modules"
),
&
menu
);
act4
->
setEnabled
(
enabled
&&
(
capabilities
&
ReloadModuleSymbolsCapability
));
QAction
*
act5
=
0
;
QAction
*
act6
=
0
;
QAction
*
act7
=
0
;
QAction
*
actUpdateModuleList
=
new
QAction
(
tr
(
"Update Module List"
),
&
menu
);
actUpdateModuleList
->
setEnabled
(
enabled
&&
(
capabilities
&
ReloadModuleCapability
));
QAction
*
actShowSourceFiles
=
new
QAction
(
tr
(
"Show Source Files for Module
\"
%1
\"
"
).
arg
(
name
),
&
menu
);
actShowSourceFiles
->
setEnabled
(
enabled
&&
(
capabilities
&
ReloadModuleCapability
));
QAction
*
actLoadSymbolsForAllModules
=
new
QAction
(
tr
(
"Load Symbols for All Modules"
),
&
menu
);
actLoadSymbolsForAllModules
->
setEnabled
(
enabled
&&
(
capabilities
&
ReloadModuleSymbolsCapability
));
QAction
*
actExamineAllModules
=
new
QAction
(
tr
(
"Examine All Modules"
),
&
menu
);
actExamineAllModules
->
setEnabled
(
enabled
&&
(
capabilities
&
ReloadModuleSymbolsCapability
));
QAction
*
actLoadSymbolsForModule
=
0
;
QAction
*
actEditFile
=
0
;
QAction
*
actShowSymbols
=
0
;
if
(
name
.
isEmpty
())
{
act
5
=
new
QAction
(
tr
(
"Load Symbols for Module"
),
&
menu
);
act
5
->
setEnabled
(
false
);
act
6
=
new
QAction
(
tr
(
"Edit File"
),
&
menu
);
act
6
->
setEnabled
(
false
);
act
7
=
new
QAction
(
tr
(
"Show Symbols"
),
&
menu
);
act
7
->
setEnabled
(
false
);
act
LoadSymbolsForModule
=
new
QAction
(
tr
(
"Load Symbols for Module"
),
&
menu
);
act
LoadSymbolsForModule
->
setEnabled
(
false
);
act
EditFile
=
new
QAction
(
tr
(
"Edit File"
),
&
menu
);
act
EditFile
->
setEnabled
(
false
);
act
ShowSymbols
=
new
QAction
(
tr
(
"Show Symbols"
),
&
menu
);
act
ShowSymbols
->
setEnabled
(
false
);
}
else
{
act5
=
new
QAction
(
tr
(
"Load Symbols for Module
\"
%1
\"
"
).
arg
(
name
),
&
menu
);
act5
->
setEnabled
(
capabilities
&
ReloadModuleSymbolsCapability
);
act6
=
new
QAction
(
tr
(
"Edit File
\"
%1
\"
"
).
arg
(
name
),
&
menu
);
act7
=
new
QAction
(
tr
(
"Show Symbols in File
\"
%1
\"
"
).
arg
(
name
),
&
menu
);
actLoadSymbolsForModule
=
new
QAction
(
tr
(
"Load Symbols for Module
\"
%1
\"
"
).
arg
(
name
),
&
menu
);
actLoadSymbolsForModule
->
setEnabled
(
capabilities
&
ReloadModuleSymbolsCapability
);
actEditFile
=
new
QAction
(
tr
(
"Edit File
\"
%1
\"
"
).
arg
(
name
),
&
menu
);
actShowSymbols
=
new
QAction
(
tr
(
"Show Symbols in File
\"
%1
\"
"
).
arg
(
name
),
&
menu
);
}
menu
.
addAction
(
act0
);
//menu.addAction(act3); // FIXME
menu
.
addAction
(
act4
);
menu
.
addAction
(
act5
);
menu
.
addAction
(
act6
);
//menu.addAction(act7); // FIXME
menu
.
addAction
(
actUpdateModuleList
);
//menu.addAction(actShowSourceFiles); // FIXME
menu
.
addAction
(
actLoadSymbolsForAllModules
);
menu
.
addAction
(
actExamineAllModules
);
menu
.
addAction
(
actLoadSymbolsForModule
);
menu
.
addAction
(
actEditFile
);
//menu.addAction(actShowSymbols); // FIXME
menu
.
addSeparator
();
QAction
*
actAdjustColumnWidths
=
menu
.
addAction
(
tr
(
"Adjust Column Widths to Contents"
));
...
...
@@ -148,21 +168,23 @@ void ModulesWindow::contextMenuEvent(QContextMenuEvent *ev)
QAction
*
act
=
menu
.
exec
(
ev
->
globalPos
());
if
(
act
==
act
0
)
{
if
(
act
==
act
UpdateModuleList
)
{
setModelData
(
RequestReloadModulesRole
);
}
else
if
(
act
==
actAdjustColumnWidths
)
{
resizeColumnsToContents
();
}
else
if
(
act
==
actAlwaysAdjustColumnWidth
)
{
setAlwaysResizeColumnsToContents
(
!
m_alwaysResizeColumnsToContents
);
//} else if (act == act
3
) {
//} else if (act == act
ShowSourceFiles
) {
// emit displaySourceRequested(name);
}
else
if
(
act
==
act
4
)
{
}
else
if
(
act
==
act
LoadSymbolsForAllModules
)
{
setModelData
(
RequestAllSymbolsRole
);
}
else
if
(
act
==
act5
)
{
}
else
if
(
act
==
actExamineAllModules
)
{
setModelData
(
RequestExamineModulesRole
);
}
else
if
(
act
==
actLoadSymbolsForModule
)
{
setModelData
(
RequestModuleSymbolsRole
,
name
);
}
else
if
(
act
==
act
6
)
{
}
else
if
(
act
==
act
EditFile
)
{
setModelData
(
RequestOpenFileRole
,
name
);
}
else
if
(
act
==
act
7
)
{
}
else
if
(
act
==
act
ShowSymbols
)
{
setModelData
(
RequestModuleSymbolsRole
,
name
);
}
}
...
...
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