debugger: make watchdog timeout configurable

(cherry picked from commit bf077800b8)

Conflicts:

	src/plugins/debugger/debuggerplugin.cpp
	src/plugins/debugger/gdb/gdboptionspage.ui
This commit is contained in:
con
2010-01-06 15:42:20 +01:00
parent ca637fdc33
commit 0de840cb43
7 changed files with 57 additions and 10 deletions

View File

@@ -383,6 +383,12 @@ DebuggerSettings *DebuggerSettings::instance()
item->setText(tr("Execute line"));
instance->insertItem(ExecuteCommand, item);
item = new SavedAction(instance);
item->setSettingsKey(debugModeGroup, QLatin1String("WatchdogTimeout"));
item->setDefaultValue(20);
instance->insertItem(GdbWatchdogTimeout, item);
return instance;
}

View File

@@ -100,6 +100,7 @@ enum DebuggerActionCode
GdbEnvironment,
GdbScriptFile,
ExecuteCommand,
GdbWatchdogTimeout,
// Stack
MaximalStackDepth,

View File

@@ -359,6 +359,7 @@ QWidget *CommonOptionsPage::createPage(QWidget *parent)
m_ui.checkBoxEnableReverseDebugging);
m_group.insert(theDebuggerAction(MaximalStackDepth),
m_ui.spinBoxMaximalStackDepth);
m_group.insert(theDebuggerAction(GdbWatchdogTimeout), 0);
m_group.insert(theDebuggerAction(LogTimeStamps), 0);
m_group.insert(theDebuggerAction(UsePreciseBreakpoints), 0);

View File

@@ -195,7 +195,8 @@ GdbEngine::GdbEngine(DebuggerManager *manager) :
m_commandTimer = new QTimer(this);
m_commandTimer->setSingleShot(true);
m_commandTimer->setInterval(COMMAND_TIMEOUT);
m_commandTimer->setInterval(
1000 * qMin(20, theDebuggerAction(GdbWatchdogTimeout)->value().toInt()));
connect(m_commandTimer, SIGNAL(timeout()), SLOT(commandTimeout()));
// Needs no resetting in initializeVariables()

View File

@@ -234,7 +234,6 @@ private: ////////// Gdb Command Management //////////
QHash<int, GdbCommand> m_cookieForToken;
QTimer *m_commandTimer;
enum { COMMAND_TIMEOUT = 20000 };
QByteArray m_pendingConsoleStreamOutput;
QByteArray m_pendingLogStreamOutput;

View File

@@ -52,6 +52,9 @@ QWidget *GdbOptionsPage::createPage(QWidget *parent)
m_ui.environmentEdit);
m_group.insert(theDebuggerAction(UsePreciseBreakpoints),
m_ui.checkBoxUsePreciseBreakpoints);
m_group.insert(theDebuggerAction(GdbWatchdogTimeout),
m_ui.spinBoxGdbWatchdogTimeout);
#if 1
m_ui.groupBoxPluginDebugging->hide();

View File

@@ -6,8 +6,8 @@
<rect>
<x>0</x>
<y>0</y>
<width>429</width>
<height>452</height>
<width>397</width>
<height>322</height>
</rect>
</property>
<layout class="QVBoxLayout" name="verticalLayout">
@@ -36,6 +36,9 @@
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="Utils::PathChooser" name="gdbLocationChooser" native="true"/>
</item>
<item row="1" column="0">
<widget class="QLabel" name="labelEnvironment">
<property name="text">
@@ -59,20 +62,53 @@
<item row="2" column="1">
<widget class="Utils::PathChooser" name="scriptFileChooser" native="true"/>
</item>
<item row="0" column="1">
<widget class="Utils::PathChooser" name="gdbLocationChooser" native="true"/>
</item>
<item row="3" column="0" colspan="2">
<widget class="QCheckBox" name="checkBoxUsePreciseBreakpoints">
<property name="text">
<string>Use full path information to set breakpoints</string>
</property>
<property name="toolTip">
<string>When this option is checked, the debugger plugin attempts
to extract full path information for all source files from gdb. This is a
slow process but enables setting breakpoints in files with the same file
name in different directories.</string>
</property>
<property name="text">
<string>Use full path information to set breakpoints</string>
</property>
</widget>
</item>
<item row="4" column="0">
<widget class="QLabel" name="labelGdbWatchdogTimeout">
<property name="text">
<string>Gdb timeout:</string>
</property>
</widget>
</item>
<item row="4" column="1">
<widget class="QSpinBox" name="spinBoxGdbWatchdogTimeout">
<property name="toolTip">
<string>This is the number of second Qt Creator will wait before
it terminates non-reacting gdb process. The default value of 20 seconds
should be sufficient for most applications, but there are situations when
loading big libraries or listing source files takes much longer than that
on slow machines. In this case the value should be increased.</string>
</property>
<property name="layoutDirection">
<enum>Qt::LeftToRight</enum>
</property>
<property name="specialValueText">
<string>&lt;unlimited&gt;</string>
</property>
<property name="minimum">
<number>20</number>
</property>
<property name="maximum">
<number>1000000</number>
</property>
<property name="singleStep">
<number>20</number>
</property>
<property name="value">
<number>20</number>
</property>
</widget>
</item>
</layout>