forked from qt-creator/qt-creator
Debugger: Make tracepoints a capability.
This commit is contained in:
@@ -89,8 +89,9 @@ private:
|
|||||||
ThreadSpecPart = 0x20,
|
ThreadSpecPart = 0x20,
|
||||||
AllConditionParts = ConditionPart|IgnoreCountPart|ThreadSpecPart,
|
AllConditionParts = ConditionPart|IgnoreCountPart|ThreadSpecPart,
|
||||||
ModulePart = 0x40,
|
ModulePart = 0x40,
|
||||||
|
TracePointPart = 0x80,
|
||||||
AllParts = FileAndLinePart|FunctionPart|AddressPart|ConditionPart
|
AllParts = FileAndLinePart|FunctionPart|AddressPart|ConditionPart
|
||||||
|IgnoreCountPart|ThreadSpecPart|ModulePart
|
|IgnoreCountPart|ThreadSpecPart|ModulePart|TracePointPart
|
||||||
};
|
};
|
||||||
|
|
||||||
void setPartsEnabled(unsigned partsMask);
|
void setPartsEnabled(unsigned partsMask);
|
||||||
@@ -116,7 +117,8 @@ BreakpointDialog::BreakpointDialog(unsigned engineCapabilities, QWidget *parent)
|
|||||||
m_enabledParts &= ~ConditionPart;
|
m_enabledParts &= ~ConditionPart;
|
||||||
if (!(engineCapabilities & BreakModuleCapability))
|
if (!(engineCapabilities & BreakModuleCapability))
|
||||||
m_enabledParts &= ~ModulePart;
|
m_enabledParts &= ~ModulePart;
|
||||||
setWindowFlags(windowFlags() & ~Qt::WindowContextHelpButtonHint);
|
if (!(engineCapabilities & TracePointCapability))
|
||||||
|
m_enabledParts &= ~TracePointPart;
|
||||||
// Match BreakpointType (omitting unknown type).
|
// Match BreakpointType (omitting unknown type).
|
||||||
m_ui.setupUi(this);
|
m_ui.setupUi(this);
|
||||||
QStringList types;
|
QStringList types;
|
||||||
@@ -208,6 +210,9 @@ void BreakpointDialog::setPartsEnabled(unsigned partsMask)
|
|||||||
|
|
||||||
m_ui.labelModule->setEnabled(partsMask & ModulePart);
|
m_ui.labelModule->setEnabled(partsMask & ModulePart);
|
||||||
m_ui.lineEditModule->setEnabled(partsMask & ModulePart);
|
m_ui.lineEditModule->setEnabled(partsMask & ModulePart);
|
||||||
|
|
||||||
|
m_ui.labelTracepoint->setEnabled(partsMask & TracePointPart);
|
||||||
|
m_ui.checkBoxTracepoint->setEnabled(partsMask & TracePointPart);
|
||||||
}
|
}
|
||||||
|
|
||||||
void BreakpointDialog::clearOtherParts(unsigned partsMask)
|
void BreakpointDialog::clearOtherParts(unsigned partsMask)
|
||||||
@@ -233,12 +238,14 @@ void BreakpointDialog::clearOtherParts(unsigned partsMask)
|
|||||||
m_ui.lineEditThreadSpec->clear();
|
m_ui.lineEditThreadSpec->clear();
|
||||||
if (invertedPartsMask & ModulePart)
|
if (invertedPartsMask & ModulePart)
|
||||||
m_ui.lineEditModule->clear();
|
m_ui.lineEditModule->clear();
|
||||||
|
|
||||||
|
if (invertedPartsMask & TracePointPart)
|
||||||
|
m_ui.checkBoxTracepoint->setChecked(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
void BreakpointDialog::getParts(unsigned partsMask, BreakpointParameters *data) const
|
void BreakpointDialog::getParts(unsigned partsMask, BreakpointParameters *data) const
|
||||||
{
|
{
|
||||||
data->enabled = m_ui.checkBoxEnabled->isChecked();
|
data->enabled = m_ui.checkBoxEnabled->isChecked();
|
||||||
data->tracepoint = m_ui.checkBoxTracepoint->isChecked();
|
|
||||||
data->command = m_ui.lineEditCommand->text().trimmed();
|
data->command = m_ui.lineEditCommand->text().trimmed();
|
||||||
|
|
||||||
if (partsMask & FileAndLinePart) {
|
if (partsMask & FileAndLinePart) {
|
||||||
@@ -261,6 +268,9 @@ void BreakpointDialog::getParts(unsigned partsMask, BreakpointParameters *data)
|
|||||||
BreakHandler::threadSpecFromDisplay(m_ui.lineEditThreadSpec->text());
|
BreakHandler::threadSpecFromDisplay(m_ui.lineEditThreadSpec->text());
|
||||||
if (partsMask & ModulePart)
|
if (partsMask & ModulePart)
|
||||||
data->module = m_ui.lineEditModule->text();
|
data->module = m_ui.lineEditModule->text();
|
||||||
|
|
||||||
|
if (partsMask & TracePointPart)
|
||||||
|
data->tracepoint = m_ui.checkBoxTracepoint->isChecked();
|
||||||
}
|
}
|
||||||
|
|
||||||
void BreakpointDialog::setParts(unsigned mask, const BreakpointParameters &data)
|
void BreakpointDialog::setParts(unsigned mask, const BreakpointParameters &data)
|
||||||
@@ -272,7 +282,6 @@ void BreakpointDialog::setParts(unsigned mask, const BreakpointParameters &data)
|
|||||||
if (mask & FileAndLinePart) {
|
if (mask & FileAndLinePart) {
|
||||||
m_ui.pathChooserFileName->setPath(data.fileName);
|
m_ui.pathChooserFileName->setPath(data.fileName);
|
||||||
m_ui.lineEditLineNumber->setText(QString::number(data.lineNumber));
|
m_ui.lineEditLineNumber->setText(QString::number(data.lineNumber));
|
||||||
m_ui.checkBoxTracepoint->setChecked(data.tracepoint);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (mask & FunctionPart)
|
if (mask & FunctionPart)
|
||||||
@@ -296,6 +305,9 @@ void BreakpointDialog::setParts(unsigned mask, const BreakpointParameters &data)
|
|||||||
setText(BreakHandler::displayFromThreadSpec(data.threadSpec));
|
setText(BreakHandler::displayFromThreadSpec(data.threadSpec));
|
||||||
if (mask & ModulePart)
|
if (mask & ModulePart)
|
||||||
m_ui.lineEditModule->setText(data.module);
|
m_ui.lineEditModule->setText(data.module);
|
||||||
|
|
||||||
|
if (mask & TracePointPart)
|
||||||
|
m_ui.checkBoxTracepoint->setChecked(data.tracepoint);
|
||||||
}
|
}
|
||||||
|
|
||||||
void BreakpointDialog::typeChanged(int)
|
void BreakpointDialog::typeChanged(int)
|
||||||
@@ -308,10 +320,10 @@ void BreakpointDialog::typeChanged(int)
|
|||||||
case UnknownType:
|
case UnknownType:
|
||||||
break;
|
break;
|
||||||
case BreakpointByFileAndLine:
|
case BreakpointByFileAndLine:
|
||||||
getParts(FileAndLinePart|ModulePart|AllConditionParts, &m_savedParameters);
|
getParts(FileAndLinePart|ModulePart|AllConditionParts|TracePointPart, &m_savedParameters);
|
||||||
break;
|
break;
|
||||||
case BreakpointByFunction:
|
case BreakpointByFunction:
|
||||||
getParts(FunctionPart|ModulePart|AllConditionParts, &m_savedParameters);
|
getParts(FunctionPart|ModulePart|AllConditionParts|TracePointPart, &m_savedParameters);
|
||||||
break;
|
break;
|
||||||
case BreakpointAtThrow:
|
case BreakpointAtThrow:
|
||||||
case BreakpointAtCatch:
|
case BreakpointAtCatch:
|
||||||
@@ -319,7 +331,7 @@ void BreakpointDialog::typeChanged(int)
|
|||||||
break;
|
break;
|
||||||
case BreakpointByAddress:
|
case BreakpointByAddress:
|
||||||
case Watchpoint:
|
case Watchpoint:
|
||||||
getParts(AddressPart|AllConditionParts, &m_savedParameters);
|
getParts(AddressPart|AllConditionParts|TracePointPart, &m_savedParameters);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -328,19 +340,19 @@ void BreakpointDialog::typeChanged(int)
|
|||||||
case UnknownType:
|
case UnknownType:
|
||||||
break;
|
break;
|
||||||
case BreakpointByFileAndLine:
|
case BreakpointByFileAndLine:
|
||||||
setParts(FileAndLinePart|AllConditionParts|ModulePart, m_savedParameters);
|
setParts(FileAndLinePart|AllConditionParts|ModulePart|TracePointPart, m_savedParameters);
|
||||||
setPartsEnabled(FileAndLinePart|AllConditionParts|ModulePart);
|
setPartsEnabled(FileAndLinePart|AllConditionParts|ModulePart|TracePointPart);
|
||||||
clearOtherParts(FileAndLinePart|AllConditionParts|ModulePart);
|
clearOtherParts(FileAndLinePart|AllConditionParts|ModulePart|TracePointPart);
|
||||||
break;
|
break;
|
||||||
case BreakpointByFunction:
|
case BreakpointByFunction:
|
||||||
setParts(FunctionPart|AllConditionParts|ModulePart, m_savedParameters);
|
setParts(FunctionPart|AllConditionParts|ModulePart|TracePointPart, m_savedParameters);
|
||||||
setPartsEnabled(FunctionPart|AllConditionParts|ModulePart);
|
setPartsEnabled(FunctionPart|AllConditionParts|ModulePart|TracePointPart);
|
||||||
clearOtherParts(FunctionPart|AllConditionParts|ModulePart);
|
clearOtherParts(FunctionPart|AllConditionParts|ModulePart|TracePointPart);
|
||||||
break;
|
break;
|
||||||
case BreakpointAtThrow:
|
case BreakpointAtThrow:
|
||||||
case BreakpointAtCatch:
|
case BreakpointAtCatch:
|
||||||
clearOtherParts(AllConditionParts|ModulePart);
|
clearOtherParts(AllConditionParts|ModulePart|TracePointPart);
|
||||||
setPartsEnabled(AllConditionParts);
|
setPartsEnabled(AllConditionParts|TracePointPart);
|
||||||
break;
|
break;
|
||||||
case BreakpointAtMain:
|
case BreakpointAtMain:
|
||||||
m_ui.lineEditFunction->setText(QLatin1String("main")); // Just for display
|
m_ui.lineEditFunction->setText(QLatin1String("main")); // Just for display
|
||||||
@@ -349,9 +361,9 @@ void BreakpointDialog::typeChanged(int)
|
|||||||
break;
|
break;
|
||||||
case BreakpointByAddress:
|
case BreakpointByAddress:
|
||||||
case Watchpoint:
|
case Watchpoint:
|
||||||
setParts(AddressPart|AllConditionParts, m_savedParameters);
|
setParts(AddressPart|AllConditionParts|TracePointPart, m_savedParameters);
|
||||||
setPartsEnabled(AddressPart|AllConditionParts);
|
setPartsEnabled(AddressPart|AllConditionParts|TracePointPart|TracePointPart);
|
||||||
clearOtherParts(AddressPart|AllConditionParts);
|
clearOtherParts(AddressPart|AllConditionParts|TracePointPart);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -171,11 +171,12 @@ enum DebuggerCapabilities
|
|||||||
BreakOnThrowAndCatchCapability = 0x200,
|
BreakOnThrowAndCatchCapability = 0x200,
|
||||||
BreakConditionCapability = 0x400, //!< Conditional Breakpoints
|
BreakConditionCapability = 0x400, //!< Conditional Breakpoints
|
||||||
BreakModuleCapability = 0x800, //!< Breakpoint specification includes module
|
BreakModuleCapability = 0x800, //!< Breakpoint specification includes module
|
||||||
ReturnFromFunctionCapability = 0x1000,
|
TracePointCapability = 0x1000, //!< Breakpoint specification includes module
|
||||||
CreateFullBacktraceCapability = 0x2000,
|
ReturnFromFunctionCapability = 0x2000,
|
||||||
AddWatcherCapability = 0x4000,
|
CreateFullBacktraceCapability = 0x4000,
|
||||||
WatchpointCapability = 0x8000,
|
AddWatcherCapability = 0x8000,
|
||||||
ShowModuleSymbolsCapability = 0x10000,
|
WatchpointCapability = 0x10000,
|
||||||
|
ShowModuleSymbolsCapability = 0x20000,
|
||||||
AllDebuggerCapabilities = 0xFFFFFFFF
|
AllDebuggerCapabilities = 0xFFFFFFFF
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -1861,6 +1861,7 @@ unsigned GdbEngine::debuggerCapabilities() const
|
|||||||
| ReloadModuleSymbolsCapability
|
| ReloadModuleSymbolsCapability
|
||||||
| BreakOnThrowAndCatchCapability
|
| BreakOnThrowAndCatchCapability
|
||||||
| BreakConditionCapability
|
| BreakConditionCapability
|
||||||
|
| TracePointCapability
|
||||||
| ReturnFromFunctionCapability
|
| ReturnFromFunctionCapability
|
||||||
| CreateFullBacktraceCapability
|
| CreateFullBacktraceCapability
|
||||||
| WatchpointCapability
|
| WatchpointCapability
|
||||||
|
|||||||
Reference in New Issue
Block a user