Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
F
flatpak-qt-creator
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Service Desk
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Environments
Packages & Registries
Packages & Registries
Container Registry
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Marco Bubke
flatpak-qt-creator
Commits
ef8e69d9
Commit
ef8e69d9
authored
Apr 22, 2009
by
dt
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'master' of git@scm.dev.nokia.troll.no:creator/mainline
parents
25135e9e
e81e94cb
Changes
29
Hide whitespace changes
Inline
Side-by-side
Showing
29 changed files
with
421 additions
and
185 deletions
+421
-185
dist/changes-1.1.0
dist/changes-1.1.0
+50
-52
src/libs/utils/process_stub.pro
src/libs/utils/process_stub.pro
+1
-1
src/plugins/cmakeprojectmanager/cmakeprojectmanager.cpp
src/plugins/cmakeprojectmanager/cmakeprojectmanager.cpp
+2
-1
src/plugins/coreplugin/images/qtcreator_logo_256.png
src/plugins/coreplugin/images/qtcreator_logo_256.png
+0
-0
src/plugins/coreplugin/images/qtcreator_logo_512.png
src/plugins/coreplugin/images/qtcreator_logo_512.png
+0
-0
src/plugins/coreplugin/welcomemode.cpp
src/plugins/coreplugin/welcomemode.cpp
+1
-1
src/plugins/cppeditor/cppeditor.cpp
src/plugins/cppeditor/cppeditor.cpp
+7
-0
src/plugins/debugger/cdb/cdb.pri
src/plugins/debugger/cdb/cdb.pri
+1
-0
src/plugins/debugger/cdb/cdbassembler.cpp
src/plugins/debugger/cdb/cdbassembler.cpp
+4
-4
src/plugins/debugger/cdb/cdbassembler.h
src/plugins/debugger/cdb/cdbassembler.h
+5
-6
src/plugins/debugger/cdb/cdbbreakpoint.cpp
src/plugins/debugger/cdb/cdbbreakpoint.cpp
+5
-5
src/plugins/debugger/cdb/cdbbreakpoint.h
src/plugins/debugger/cdb/cdbbreakpoint.h
+5
-6
src/plugins/debugger/cdb/cdbcom.h
src/plugins/debugger/cdb/cdbcom.h
+46
-0
src/plugins/debugger/cdb/cdbdebugengine.cpp
src/plugins/debugger/cdb/cdbdebugengine.cpp
+64
-10
src/plugins/debugger/cdb/cdbdebugengine_p.h
src/plugins/debugger/cdb/cdbdebugengine_p.h
+15
-9
src/plugins/debugger/cdb/cdbdebugeventcallback.cpp
src/plugins/debugger/cdb/cdbdebugeventcallback.cpp
+108
-14
src/plugins/debugger/cdb/cdbdebugeventcallback.h
src/plugins/debugger/cdb/cdbdebugeventcallback.h
+5
-5
src/plugins/debugger/cdb/cdbdebugoutput.cpp
src/plugins/debugger/cdb/cdbdebugoutput.cpp
+2
-2
src/plugins/debugger/cdb/cdbdebugoutput.h
src/plugins/debugger/cdb/cdbdebugoutput.h
+4
-5
src/plugins/debugger/cdb/cdbdumperhelper.cpp
src/plugins/debugger/cdb/cdbdumperhelper.cpp
+13
-11
src/plugins/debugger/cdb/cdbmodules.cpp
src/plugins/debugger/cdb/cdbmodules.cpp
+4
-4
src/plugins/debugger/cdb/cdbmodules.h
src/plugins/debugger/cdb/cdbmodules.h
+5
-6
src/plugins/debugger/cdb/cdbstacktracecontext.cpp
src/plugins/debugger/cdb/cdbstacktracecontext.cpp
+44
-18
src/plugins/debugger/cdb/cdbstacktracecontext.h
src/plugins/debugger/cdb/cdbstacktracecontext.h
+14
-10
src/plugins/debugger/cdb/cdbsymbolgroupcontext.cpp
src/plugins/debugger/cdb/cdbsymbolgroupcontext.cpp
+4
-4
src/plugins/debugger/cdb/cdbsymbolgroupcontext.h
src/plugins/debugger/cdb/cdbsymbolgroupcontext.h
+5
-6
src/plugins/debugger/dumper.pro
src/plugins/debugger/dumper.pro
+2
-0
src/plugins/debugger/gdbengine.cpp
src/plugins/debugger/gdbengine.cpp
+4
-4
src/plugins/projectexplorer/projectexplorer.cpp
src/plugins/projectexplorer/projectexplorer.cpp
+1
-1
No files found.
dist/changes-1.1.0
View file @
ef8e69d9
The QtCreator 1.1 release contains bug fixes and new features.
A more detailed list of changes follows below. If you want to know
the exact and complete list of changes, you can check out the QtCreator
sources from the public git repository and check the logs, e.g.
git clone git://labs.trolltech.com/qt-creator
git log --pretty=oneline origin/1.0.0..origin/master
A more detailed list of changes follows below. If you want to know the exact
and complete list of changes, you can check out the QtCreator sources from the
public git repository and check the logs, e.g.
The release introduces source and binary incompatible changes to the plugin API,
so if you created your own custom plugins these need to be adapted.
git clone git://labs.trolltech.com/qt-creator
git log --pretty=oneline v1.0.0..v1.1.0
General
* Completely reworked editor split mechanism.
* Supports cmake project
* Support generic Makefile based projects
This release introduces source and binary incompatible changes to the plugin
API, so if you created your own custom plugins these need to be adapted.
Editing
* Added support for JavaScript.
* Added syntax highlighting and code completion for qdoc and doxygen tags.
* Improved function argument hint.
* More checkpoints in editor history.
* Ctrl-click for jumping to a symbol definition.
* Improved open documents view (sorted, single-click, close buttons).
* Copying text from the context help browser and output windows didn't work.
* Completely reworked editor split mechanism
* Added support for JavaScript
* Added syntax highlighting and code completion for qdoc and doxygen tags
* Improved function argument hint
* Added more checkpoints in editor history
* Added Ctrl-click for jumping to a symbol definition
* Improved open documents view (sorted, single-click, close buttons)
* Fixed copying text from the context help browser and output windows
* Improved FakeVim mode
* Improved C++ parsing and inline error indicators
Building and Running
* Experimental support for generic Makefile based projects.
* Improved .pro file parsing, handling scopes and $$system directive.
* Support subdir.file in .pro files.
* Option to start application in external terminal.
* Added experimental support for generic Makefile based projects
* Improved .pro file parsing, handling scopes and $$system directive
* Added support for subdir.file in .pro files
* Added an option to start the application in an external terminal
* Improved CMake support
Debugging
*
Possibility to attach debugger to core files.
*
Made it possible to attach debugger to core files
* Changed approach to dumper loading: Build once per used Qt version,
no dumper buildstep anymore.
* New dumper for std::set. Improved QString, QVariant, std::wstring
* Make strategy to load shared objects configurable (auto-solib-add).
* Increase number of shown stack frames on request instead of loading them all.
* Improved interaction in the Locals&Watchers view.
no dumper buildstep anymore
* Added a dumper for std::set and improved dumpers for QString, QVariant,
std::wstring
* Made strategy to load shared objects configurable (auto-solib-add)
* The number of shown stack frames is now increased on request instead of
loading them all
* Improved interaction in the Locals & Watchers view
Wizards
* It is now possible to choose
file suffixes in the options dialog.
*
Code of language change event is now generated correctly (added call
to base class).
* Generated header guards now adapt to file extension
.
* It is now possible to choose
default file suffixes in the options dialog
*
Fixed the code that was generated for handling a language change event
(added call to base class)
* Generated header guards now adapt to file extension
Designer
* Added signal/slot editor
.
* Fixed "Goto slot" (formatting/multiple inheritance)
.
* Context help for form editor widgets
.
* Added signal/slot editor
* Fixed "Goto slot" (formatting/multiple inheritance)
* Context help for form editor widgets
Version control plugins
* Fixed handling of colored git output
.
*
Made svn 1.6 work.
*
Added syntax highlighting to the git submit editor.
* Made
git submit editor remove comment lines.
* Fixed handling of colored git output
*
Added syntax highlighting to the git submit editor
*
Made git submit editor remove comment lines
* Made
Subversion 1.6 work
* Added configuration options for submit editors (user fields, word
wrapping).
wrapping)
Platform Specific
Mac
*
Don't override systems Hide action.
*
Option to set DYLD_IMAGE_SUFFIX=_debug when running applications.
*
Open in Finder action in project tree.
*
The system's Hide action is no longer overridden
*
Added option to set DYLD_IMAGE_SUFFIX=_debug when running applications
*
Added Open in Finder action in project tree
Linux
* Don't crash because of incompatible libQt3Support:
Provide a wrapper script and ship libQt3Support.
(Fixes crashes e.g. in file dialogs on openSUSE 11.1)
* Fixed crash because of incompatible libQt3Support, by providing a wrapper
script and shipping libQt3Support.
(fixes crashes e.g. in file dialogs on openSUSE 11.1)
Lots of improvements to
* FakeVim mode
* CMake support
* C++ parsing and inline error indicators
* Everything :-)
Additional credits go to:
* Martin Aumueller <aumuell@reserv.at> (FakeVim improvements)
* Kris Wong (various patches)
* Mathias Gumz (fixed permission checks on network NTFS drives)
src/libs/utils/process_stub.pro
View file @
ef8e69d9
IDE_BUILD_TREE
=
../../..
IDE_BUILD_TREE
=
$$
OUT_PWD
/
../../..
include
(..
/../../
qtcreator
.
pri
)
TEMPLATE
=
app
...
...
src/plugins/cmakeprojectmanager/cmakeprojectmanager.cpp
View file @
ef8e69d9
...
...
@@ -110,8 +110,9 @@ QProcess *CMakeManager::createXmlFile(const QStringList &arguments, const QStrin
QString
buildDirectoryPath
=
buildDirectory
.
absolutePath
();
qDebug
()
<<
"Creating cbp file in"
<<
buildDirectoryPath
;
buildDirectory
.
mkpath
(
buildDirectoryPath
);
QProcess
*
cmake
=
new
QProcess
;
QProcess
*
cmake
=
new
QProcess
;
cmake
->
setWorkingDirectory
(
buildDirectoryPath
);
cmake
->
setProcessChannelMode
(
QProcess
::
MergedChannels
);
#ifdef Q_OS_WIN
QString
generator
=
"-GCodeBlocks - MinGW Makefiles"
;
...
...
src/plugins/coreplugin/images/qtcreator_logo_256.png
100755 → 100644
View file @
ef8e69d9
File mode changed from 100755 to 100644
src/plugins/coreplugin/images/qtcreator_logo_512.png
100755 → 100644
View file @
ef8e69d9
File mode changed from 100755 to 100644
src/plugins/coreplugin/welcomemode.cpp
View file @
ef8e69d9
...
...
@@ -100,7 +100,7 @@ WelcomeModePrivate::WelcomeModePrivate() :
#if defined(QT_NO_WEBKIT)
const
char
LABEL
[]
=
Q_TRANSLATE_NOOP
(
"Core::Internal::WelcomeMode"
,
const
char
LABEL
[]
=
Q
T
_TRANSLATE_NOOP
(
"Core::Internal::WelcomeMode"
,
"<center><table><tr><td><img src=
\"
:/core/html/images/product_logo.png
\"
/></td><td width=300>"
"<h2><br/><br/>Welcome</h2><p> Qt Creator is an intuitive, modern cross platform IDE that enables "
"developers to create graphically appealing applications for desktop, "
...
...
src/plugins/cppeditor/cppeditor.cpp
View file @
ef8e69d9
...
...
@@ -604,6 +604,13 @@ CPPEditor::Link CPPEditor::findLinkAt(const QTextCursor &cursor,
QTextCursor
tc
=
cursor
;
// Make sure we're not at the start of a word
{
const
QChar
c
=
characterAt
(
tc
.
position
());
if
(
c
.
isLetter
()
||
c
==
QLatin1Char
(
'_'
))
tc
.
movePosition
(
QTextCursor
::
Right
);
}
static
TokenUnderCursor
tokenUnderCursor
;
QTextBlock
block
;
...
...
src/plugins/debugger/cdb/cdb.pri
View file @
ef8e69d9
...
...
@@ -27,6 +27,7 @@ INCLUDEPATH*=$$PWD
CDB_LIBPATH=$$CDB_PATH/lib/$$CDB_PLATFORM
HEADERS += \
$$PWD/cdbcom.h \
$$PWD/cdbdebugengine.h \
$$PWD/cdbdebugengine_p.h \
$$PWD/cdbdebugeventcallback.h \
...
...
src/plugins/debugger/cdb/cdbassembler.cpp
View file @
ef8e69d9
...
...
@@ -42,8 +42,8 @@ namespace Internal {
typedef
QList
<
DisassemblerLine
>
DisassemblerLineList
;
bool
getRegisters
(
IDebugControl4
*
ctl
,
IDebugRegisters2
*
ireg
,
bool
getRegisters
(
CIDebugControl
*
ctl
,
CIDebugRegisters
*
ireg
,
QList
<
Register
>
*
registers
,
QString
*
errorMessage
,
int
base
)
{
...
...
@@ -194,8 +194,8 @@ void DisassemblerOutputParser::parse(const QStringList &l)
}
}
bool
dissassemble
(
IDebugClient5
*
client
,
IDebugControl4
*
ctl
,
bool
dissassemble
(
CIDebugClient
*
client
,
CIDebugControl
*
ctl
,
ULONG64
offset
,
unsigned
long
beforeLines
,
unsigned
long
afterLines
,
...
...
src/plugins/debugger/cdb/cdbassembler.h
View file @
ef8e69d9
...
...
@@ -33,8 +33,7 @@
#include <QtCore/QList>
#include <QtCore/QString>
#include <windows.h>
#include <inc/dbgeng.h>
#include "cdbcom.h"
namespace
Debugger
{
namespace
Internal
{
...
...
@@ -44,14 +43,14 @@ class DisassemblerLine;
// Utilities related to assembler code.
class
Register
;
bool
getRegisters
(
IDebugControl4
*
ctl
,
IDebugRegisters2
*
ireg
,
bool
getRegisters
(
CIDebugControl
*
ctl
,
CIDebugRegisters
*
ireg
,
QList
<
Register
>
*
registers
,
QString
*
errorMessage
,
int
base
=
10
/* 16 for hex, etc */
);
bool
dissassemble
(
IDebugClient5
*
client
,
IDebugControl4
*
ctl
,
bool
dissassemble
(
CIDebugClient
*
client
,
CIDebugControl
*
ctl
,
ULONG64
offset
,
unsigned
long
beforeLines
,
unsigned
long
afterLines
,
...
...
src/plugins/debugger/cdb/cdbbreakpoint.cpp
View file @
ef8e69d9
...
...
@@ -131,7 +131,7 @@ QString CDBBreakPoint::expression() const
return
rc
;
}
bool
CDBBreakPoint
::
apply
(
IDebugBreakpoint2
*
ibp
,
QString
*
errorMessage
)
const
bool
CDBBreakPoint
::
apply
(
CIDebugBreakpoint
*
ibp
,
QString
*
errorMessage
)
const
{
const
QString
expr
=
expression
();
if
(
debugCDB
)
...
...
@@ -148,7 +148,7 @@ bool CDBBreakPoint::apply(IDebugBreakpoint2 *ibp, QString *errorMessage) const
return
true
;
}
bool
CDBBreakPoint
::
add
(
IDebugControl4
*
debugControl
,
QString
*
errorMessage
)
const
bool
CDBBreakPoint
::
add
(
CIDebugControl
*
debugControl
,
QString
*
errorMessage
)
const
{
IDebugBreakpoint2
*
ibp
=
0
;
const
HRESULT
hr
=
debugControl
->
AddBreakpoint2
(
DEBUG_BREAKPOINT_CODE
,
DEBUG_ANY_ID
,
&
ibp
);
...
...
@@ -176,7 +176,7 @@ QString CDBBreakPoint::canonicalSourceFile(const QString &f)
return
rc
;
}
bool
CDBBreakPoint
::
retrieve
(
IDebugBreakpoint2
*
ibp
,
QString
*
errorMessage
)
bool
CDBBreakPoint
::
retrieve
(
CIDebugBreakpoint
*
ibp
,
QString
*
errorMessage
)
{
clear
();
WCHAR
wszBuf
[
MAX_PATH
];
...
...
@@ -245,7 +245,7 @@ bool CDBBreakPoint::parseExpression(const QString &expr)
return
true
;
}
bool
CDBBreakPoint
::
getBreakPointCount
(
IDebugControl4
*
debugControl
,
ULONG
*
count
,
QString
*
errorMessage
/* = 0*/
)
bool
CDBBreakPoint
::
getBreakPointCount
(
CIDebugControl
*
debugControl
,
ULONG
*
count
,
QString
*
errorMessage
/* = 0*/
)
{
const
HRESULT
hr
=
debugControl
->
GetNumberBreakpoints
(
count
);
if
(
FAILED
(
hr
))
{
...
...
@@ -257,7 +257,7 @@ bool CDBBreakPoint::getBreakPointCount(IDebugControl4* debugControl, ULONG *coun
return
true
;
}
bool
CDBBreakPoint
::
getBreakPoints
(
IDebugControl4
*
debugControl
,
QList
<
CDBBreakPoint
>
*
bps
,
QString
*
errorMessage
)
bool
CDBBreakPoint
::
getBreakPoints
(
CIDebugControl
*
debugControl
,
QList
<
CDBBreakPoint
>
*
bps
,
QString
*
errorMessage
)
{
ULONG
count
=
0
;
bps
->
clear
();
...
...
src/plugins/debugger/cdb/cdbbreakpoint.h
View file @
ef8e69d9
...
...
@@ -30,8 +30,7 @@
#ifndef CDBBREAKPOINTS_H
#define CDBBREAKPOINTS_H
#include <windows.h>
#include <inc/dbgeng.h>
#include "cdbcom.h"
#include <QtCore/QString>
#include <QtCore/QList>
...
...
@@ -64,16 +63,16 @@ struct CDBBreakPoint
// Apply parameters
bool
apply
(
IDebugBreakpoint2
*
ibp
,
QString
*
errorMessage
)
const
;
// Convenience to add to a IDebugControl4
bool
add
(
IDebugControl4
*
debugControl
,
QString
*
errorMessage
)
const
;
bool
add
(
CIDebugControl
*
debugControl
,
QString
*
errorMessage
)
const
;
// Retrieve/parse breakpoints from the interfaces
bool
retrieve
(
IDebugBreakpoint2
*
ibp
,
QString
*
errorMessage
);
bool
parseExpression
(
const
QString
&
expr
);
// Retrieve all breakpoints from the engine
static
bool
getBreakPointCount
(
IDebugControl4
*
debugControl
,
ULONG
*
count
,
QString
*
errorMessage
=
0
);
static
bool
getBreakPoints
(
IDebugControl4
*
debugControl
,
QList
<
CDBBreakPoint
>
*
bps
,
QString
*
errorMessage
);
static
bool
getBreakPointCount
(
CIDebugControl
*
debugControl
,
ULONG
*
count
,
QString
*
errorMessage
=
0
);
static
bool
getBreakPoints
(
CIDebugControl
*
debugControl
,
QList
<
CDBBreakPoint
>
*
bps
,
QString
*
errorMessage
);
// Synchronize (halted) engine with BreakHandler.
static
bool
synchronizeBreakPoints
(
IDebugControl4
*
ctl
,
IDebugSymbols3
*
syms
,
static
bool
synchronizeBreakPoints
(
CIDebugControl
*
ctl
,
CIDebugSymbols
*
syms
,
BreakHandler
*
bh
,
QString
*
errorMessage
);
// Return a 'canonical' file (using '/' and capitalized drive letter)
...
...
src/plugins/debugger/cdb/cdbcom.h
0 → 100644
View file @
ef8e69d9
/**************************************************************************
**
** This file is part of Qt Creator
**
** Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
**
** Contact: Qt Software Information (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 qt-sales@nokia.com.
**
**************************************************************************/
#ifndef CDBCOM_H
#define CDBCOM_H
#include <windows.h>
#include <inc/dbgeng.h>
// typedef out the version numbers
typedef
IDebugClient5
CIDebugClient
;
typedef
IDebugControl4
CIDebugControl
;
typedef
IDebugSystemObjects4
CIDebugSystemObjects
;
typedef
IDebugSymbols3
CIDebugSymbols
;
typedef
IDebugRegisters2
CIDebugRegisters
;
typedef
IDebugDataSpaces4
CIDebugDataSpaces
;
typedef
IDebugSymbolGroup2
CIDebugSymbolGroup
;
typedef
IDebugBreakpoint2
CIDebugBreakpoint
;
#endif // CDBCOM_H
src/plugins/debugger/cdb/cdbdebugengine.cpp
View file @
ef8e69d9
...
...
@@ -125,25 +125,74 @@ static inline QString msgLibLoadFailed(const QString &lib, const QString &why)
// ----- Engine helpers
static
inline
ULONG
getInterruptTimeOutSecs
(
IDebugControl4
*
ctl
)
static
inline
ULONG
getInterruptTimeOutSecs
(
CIDebugControl
*
ctl
)
{
ULONG
rc
=
0
;
ctl
->
GetInterruptTimeout
(
&
rc
);
return
rc
;
}
static
inline
bool
getExecutionStatus
(
IDebugControl4
*
ctl
,
ULONG
*
executionStatus
,
QString
*
errorMessage
)
bool
getExecutionStatus
(
CIDebugControl
*
ctl
,
ULONG
*
executionStatus
,
QString
*
errorMessage
/* = 0 */
)
{
const
HRESULT
hr
=
ctl
->
GetExecutionStatus
(
executionStatus
);
if
(
FAILED
(
hr
))
{
*
errorMessage
=
msgComFailed
(
"GetExecutionStatus"
,
hr
);
if
(
errorMessage
)
*
errorMessage
=
msgComFailed
(
"GetExecutionStatus"
,
hr
);
return
false
;
}
return
true
;
}
const
char
*
executionStatusString
(
ULONG
executionStatus
)
{
switch
(
executionStatus
)
{
case
DEBUG_STATUS_NO_CHANGE
:
return
"DEBUG_STATUS_NO_CHANGE"
;
case
DEBUG_STATUS_GO
:
return
"DEBUG_STATUS_GO"
;
case
DEBUG_STATUS_GO_HANDLED
:
return
"DEBUG_STATUS_GO_HANDLED"
;
case
DEBUG_STATUS_GO_NOT_HANDLED
:
return
"DEBUG_STATUS_GO_NOT_HANDLED"
;
case
DEBUG_STATUS_STEP_OVER
:
return
"DEBUG_STATUS_STEP_OVER"
;
case
DEBUG_STATUS_STEP_INTO
:
return
"DEBUG_STATUS_STEP_INTO"
;
case
DEBUG_STATUS_BREAK
:
return
"DEBUG_STATUS_BREAK"
;
case
DEBUG_STATUS_NO_DEBUGGEE
:
return
"DEBUG_STATUS_NO_DEBUGGEE"
;
case
DEBUG_STATUS_STEP_BRANCH
:
return
"DEBUG_STATUS_STEP_BRANCH"
;
case
DEBUG_STATUS_IGNORE_EVENT
:
return
"DEBUG_STATUS_IGNORE_EVENT"
;
case
DEBUG_STATUS_RESTART_REQUESTED
:
return
"DEBUG_STATUS_RESTART_REQUESTED"
;
case
DEBUG_STATUS_REVERSE_GO
:
return
"DEBUG_STATUS_REVERSE_GO"
;
case
DEBUG_STATUS_REVERSE_STEP_BRANCH
:
return
"DEBUG_STATUS_REVERSE_STEP_BRANCH"
;
case
DEBUG_STATUS_REVERSE_STEP_OVER
:
return
"DEBUG_STATUS_REVERSE_STEP_OVER"
;
case
DEBUG_STATUS_REVERSE_STEP_INTO
:
return
"DEBUG_STATUS_REVERSE_STEP_INTO"
;
default:
break
;
}
return
"<Unknown execution status>"
;
}
// Debug convenience
const
char
*
executionStatusString
(
CIDebugControl
*
ctl
)
{
ULONG
executionStatus
;
if
(
getExecutionStatus
(
ctl
,
&
executionStatus
))
return
executionStatusString
(
executionStatus
);
return
"<failed>"
;
}
// --------- DebuggerEngineLibrary
DebuggerEngineLibrary
::
DebuggerEngineLibrary
()
:
m_debugCreate
(
0
)
...
...
@@ -189,7 +238,7 @@ bool DebuggerEngineLibrary::init(const QString &path, QString *errorMessage)
}
// ----- SyntaxSetter
SyntaxSetter
::
SyntaxSetter
(
IDebugControl4
*
ctl
,
ULONG
desiredSyntax
)
:
SyntaxSetter
::
SyntaxSetter
(
CIDebugControl
*
ctl
,
ULONG
desiredSyntax
)
:
m_desiredSyntax
(
desiredSyntax
),
m_ctl
(
ctl
)
{
...
...
@@ -385,8 +434,10 @@ void CdbDebugEngine::shutdown()
exitDebugger
();
}
void
CdbDebugEngine
::
setToolTipExpression
(
const
QPoint
&
/*pos*/
,
const
QString
&
/*exp*/
)
void
CdbDebugEngine
::
setToolTipExpression
(
const
QPoint
&
pos
,
const
QString
&
exp
)
{
if
(
debugCDB
)
qDebug
()
<<
Q_FUNC_INFO
<<
'\n'
<<
pos
<<
exp
;
}
void
CdbDebugEnginePrivate
::
clearDisplay
()
...
...
@@ -939,7 +990,7 @@ void CdbDebugEngine::executeDebuggerCommand(const QString &command)
qWarning
(
"%s
\n
"
,
qPrintable
(
errorMessage
));
}
bool
CdbDebugEnginePrivate
::
executeDebuggerCommand
(
IDebugControl4
*
ctrl
,
const
QString
&
command
,
QString
*
errorMessage
)
bool
CdbDebugEnginePrivate
::
executeDebuggerCommand
(
CIDebugControl
*
ctrl
,
const
QString
&
command
,
QString
*
errorMessage
)
{
if
(
debugCDB
)
qDebug
()
<<
Q_FUNC_INFO
<<
command
;
...
...
@@ -1186,6 +1237,10 @@ void CdbDebugEngine::reloadRegisters()
void
CdbDebugEngine
::
timerEvent
(
QTimerEvent
*
te
)
{
// Fetch away the debug events and notify if debuggee
// stops. Note that IDebugEventCallback does not
// cover all cases of a debuggee stopping execution
// (such as step over,etc).
if
(
te
->
timerId
()
!=
m_d
->
m_watchTimer
)
return
;
...
...
@@ -1319,8 +1374,7 @@ void CdbDebugEnginePrivate::updateStackTrace()
QString
errorMessage
;
m_engine
->
reloadRegisters
();
m_currentStackTrace
=
CdbStackTraceContext
::
create
(
m_cif
.
debugControl
,
m_cif
.
debugSystemObjects
,
m_cif
.
debugSymbols
,
m_currentThreadId
,
&
errorMessage
);
CdbStackTraceContext
::
create
(
&
m_cif
,
m_currentThreadId
,
&
errorMessage
);
if
(
!
m_currentStackTrace
)
{
qWarning
(
"%s: failed to create trace context: %s"
,
Q_FUNC_INFO
,
qPrintable
(
errorMessage
));
return
;
...
...
src/plugins/debugger/cdb/cdbdebugengine_p.h
View file @
ef8e69d9
...
...
@@ -73,11 +73,11 @@ private:
class
SyntaxSetter
{
Q_DISABLE_COPY
(
SyntaxSetter
)
public:
explicit
inline
SyntaxSetter
(
IDebugControl4
*
ctl
,
ULONG
desiredSyntax
);
explicit
inline
SyntaxSetter
(
CIDebugControl
*
ctl
,
ULONG
desiredSyntax
);
inline
~
SyntaxSetter
();
private:
const
ULONG
m_desiredSyntax
;
IDebugControl4
*
m_ctl
;
CIDebugControl
*
m_ctl
;
ULONG
m_oldSyntax
;
};
...
...
@@ -85,12 +85,12 @@ private:
struct
CdbComInterfaces
{
CdbComInterfaces
();
IDebugClient5
*
debugClient
;
IDebugControl4
*
debugControl
;
IDebugSystemObjects4
*
debugSystemObjects
;
IDebugSymbols3
*
debugSymbols
;
IDebugRegisters2
*
debugRegisters
;
IDebugDataSpaces4
*
debugDataSpaces
;
CIDebugClient
*
debugClient
;
CIDebugControl
*
debugControl
;
CIDebugSystemObjects
*
debugSystemObjects
;
CIDebugSymbols
*
debugSymbols
;
CIDebugRegisters
*
debugRegisters
;
CIDebugDataSpaces
*
debugDataSpaces
;
};
struct
CdbDebugEnginePrivate
...
...
@@ -130,7 +130,7 @@ struct CdbDebugEnginePrivate
bool
attemptBreakpointSynchronization
(
QString
*
errorMessage
);
static
bool
executeDebuggerCommand
(
IDebugControl4
*
ctrl
,
const
QString
&
command
,
QString
*
errorMessage
);
static
bool
executeDebuggerCommand
(
CIDebugControl
*
ctrl
,
const
QString
&
command
,
QString
*
errorMessage
);
const
QSharedPointer
<
CdbOptions
>
m_options
;
HANDLE
m_hDebuggeeProcess
;
...
...
@@ -154,6 +154,12 @@ struct CdbDebugEnginePrivate
Core
::
Utils
::
ConsoleProcess
m_consoleStubProc
;
};
// helper functions
bool
getExecutionStatus
(
CIDebugControl
*
ctl
,
ULONG
*
executionStatus
,
QString
*
errorMessage
=
0
);
const
char
*
executionStatusString
(
ULONG
executionStatus
);
const
char
*
executionStatusString
(
CIDebugControl
*
ctl
);
// Message
QString
msgDebugEngineComResult
(
HRESULT
hr
);
QString
msgComFailed
(
const
char
*
func
,
HRESULT
hr
);
...
...
src/plugins/debugger/cdb/cdbdebugeventcallback.cpp
View file @
ef8e69d9
...
...
@@ -32,8 +32,12 @@
#include "cdbdebugengine_p.h"
#include "debuggermanager.h"
#include "breakhandler.h"
#include "cdbstacktracecontext.h"
enum
{
cppExceptionCode
=
0xe06d7363
};
#include <QtCore/QDebug>
#include <QtCore/QTextStream>
namespace
Debugger
{
namespace
Internal
{
...
...
@@ -198,7 +202,7 @@ STDMETHODIMP CdbDebugEventCallbackBase::ChangeSymbolState(
return
S_OK
;
}
IDebugEventCallbacksWide
*
CdbDebugEventCallbackBase
::
getEventCallback
(
IDebugClient5
*
clnt
)
IDebugEventCallbacksWide
*
CdbDebugEventCallbackBase
::
getEventCallback
(
CIDebugClient
*
clnt
)
{
IDebugEventCallbacksWide
*
rc
=
0
;
if
(
SUCCEEDED
(
clnt
->
GetEventCallbacksWide
(
&
rc
)))
...
...
@@ -231,26 +235,116 @@ STDMETHODIMP CdbDebugEventCallback::Breakpoint(THIS_ __in PDEBUG_BREAKPOINT2 Bp)
return
S_OK
;
}
static
inline
QString
msgException
(
const
EXCEPTION_RECORD64
*
Exception
,
ULONG
FirstChance
)
// Simple exception formatting
void
formatException
(
const
EXCEPTION_RECORD64
*
e
,
QTextStream
&
str
)
{
str
.
setIntegerBase
(
16
);
str
<<
"
\n
Exception at 0x"
<<
e
->
ExceptionAddress
<<
", code: 0x"
<<
e
->
ExceptionCode
<<
": "
;
switch
(
e
->
ExceptionCode
)
{
case
cppExceptionCode
:
str
<<
"C++ exception"
;
break
;
case
EXCEPTION_ACCESS_VIOLATION
:
{
const
bool
writeOperation
=
e
->
ExceptionInformation
[
0
];
str
<<
(
writeOperation
?
"write access violation"
:
"read access violation"
);
}
break
;
case
EXCEPTION_ARRAY_BOUNDS_EXCEEDED
:
str
<<
"arrary bounds exceeded"
;
break
;
case
EXCEPTION_BREAKPOINT
:
str
<<
"breakpoint"
;
break
;
case
EXCEPTION_DATATYPE_MISALIGNMENT
:
str
<<
"datatype misalignment"
;
break
;
case
EXCEPTION_FLT_DENORMAL_OPERAND
:
str
<<
"floating point exception"
;
break
;
case
EXCEPTION_FLT_DIVIDE_BY_ZERO
:
str
<<
"division by zero"
;
break
;
case
EXCEPTION_FLT_INEXACT_RESULT
:
str
<<
" floating-point operation cannot be represented exactly as a decimal fraction"
;
break
;
case
EXCEPTION_FLT_INVALID_OPERATION
:
str
<<
"invalid floating-point operation"
;
break
;
case
EXCEPTION_FLT_OVERFLOW
:
str
<<
"floating-point overflow"
;
break
;
case
EXCEPTION_FLT_STACK_CHECK
:
str
<<
"floating-point operation stack over/underflow"
;
break
;
case
EXCEPTION_FLT_UNDERFLOW
:
str
<<
"floating-point UNDERFLOW"
;
break
;
case
EXCEPTION_ILLEGAL_INSTRUCTION
:
str
<<
"invalid instruction"
;
break
;
case
EXCEPTION_IN_PAGE_ERROR
:
str
<<
"page in error"
;
break
;
case
EXCEPTION_INT_DIVIDE_BY_ZERO
:
str
<<
"integer division by zero"
;
break
;
case
EXCEPTION_INT_OVERFLOW
:
str
<<
"integer overflow"
;
break
;
case
EXCEPTION_INVALID_DISPOSITION
:
str
<<
"invalid disposition to exception dispatcher"
;
break
;
case
EXCEPTION_NONCONTINUABLE_EXCEPTION
:
str
<<
"attempt to continue execution after noncontinuable exception"
;
break
;
case
EXCEPTION_PRIV_INSTRUCTION
:
str
<<
"priviledged instruction"
;