forked from qt-creator/qt-creator
		
	Valgrind: Allow specifying extra arguments to valgrind etc
Fixes: QTCREATORBUG-18693 Change-Id: Ibb968dcd82b118340a45329b4a14b28d85700661 Reviewed-by: Christian Stenger <christian.stenger@qt.io>
This commit is contained in:
		@@ -131,7 +131,8 @@
 | 
			
		||||
 | 
			
		||||
    You can write your own suppression files if parts of your project contain
 | 
			
		||||
    errors you cannot fix and you do not want to be reminded of them. Click
 | 
			
		||||
    \uicontrol Add in the \uicontrol {Memory Analysis} dialog to add the suppression files.
 | 
			
		||||
    \uicontrol Add in the \uicontrol {MemCheck Memory Analysis} dialog to add
 | 
			
		||||
    the suppression files.
 | 
			
		||||
    For more information about writing suppression files, see
 | 
			
		||||
    \l{http://valgrind.org/docs/manual/manual-core.html#manual-core.suppress}
 | 
			
		||||
    {Suppressing Errors} in the Valgrind documentation.
 | 
			
		||||
@@ -220,8 +221,8 @@
 | 
			
		||||
    of the project.
 | 
			
		||||
 | 
			
		||||
    To specify settings for Valgrind, select \uicontrol Tools >
 | 
			
		||||
    \uicontrol Options > \uicontrol Analyzer. The \uicontrol {Profiling Options}
 | 
			
		||||
    group contains Callgrind options.
 | 
			
		||||
    \uicontrol Options > \uicontrol Analyzer. The \uicontrol
 | 
			
		||||
    {Callgrind Profiling Options} group contains Callgrind options.
 | 
			
		||||
 | 
			
		||||
    \image qtcreator-valgrind-callgrind-options.png "Valgrind options"
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -35,6 +35,7 @@
 | 
			
		||||
#include <debugger/analyzer/analyzermanager.h>
 | 
			
		||||
 | 
			
		||||
#include <utils/qtcassert.h>
 | 
			
		||||
#include <utils/qtcprocess.h>
 | 
			
		||||
 | 
			
		||||
using namespace ProjectExplorer;
 | 
			
		||||
using namespace Valgrind::Callgrind;
 | 
			
		||||
@@ -96,6 +97,8 @@ QStringList CallgrindToolRunner::toolArguments() const
 | 
			
		||||
    if (!m_argumentForToggleCollect.isEmpty())
 | 
			
		||||
        arguments << m_argumentForToggleCollect;
 | 
			
		||||
 | 
			
		||||
    arguments << Utils::QtcProcess::splitArgs(m_settings.callgrindArguments());
 | 
			
		||||
 | 
			
		||||
    return arguments;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -220,6 +220,8 @@ QStringList MemcheckToolRunner::toolArguments() const
 | 
			
		||||
    if (m_withGdb)
 | 
			
		||||
        arguments << "--vgdb=yes" << "--vgdb-error=0";
 | 
			
		||||
 | 
			
		||||
    arguments << Utils::QtcProcess::splitArgs(m_settings.memcheckArguments());
 | 
			
		||||
 | 
			
		||||
    return arguments;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -93,6 +93,12 @@ ValgrindConfigWidget::ValgrindConfigWidget(ValgrindBaseSettings *settings)
 | 
			
		||||
 | 
			
		||||
    connect(m_ui->valgrindExeChooser, &Utils::PathChooser::rawPathChanged,
 | 
			
		||||
            m_settings, &ValgrindBaseSettings::setValgrindExecutable);
 | 
			
		||||
 | 
			
		||||
    connect(m_ui->valgrindArgumentsLineEdit, &QLineEdit::textChanged,
 | 
			
		||||
            m_settings, &ValgrindBaseSettings::setValgrindArguments);
 | 
			
		||||
    connect(m_settings, &ValgrindBaseSettings::valgrindArgumentsChanged,
 | 
			
		||||
            m_ui->valgrindArgumentsLineEdit, &QLineEdit::setText);
 | 
			
		||||
 | 
			
		||||
    connect(m_ui->smcDetectionComboBox, QOverload<int>::of(&QComboBox::currentIndexChanged),
 | 
			
		||||
            m_settings, &ValgrindBaseSettings::setSelfModifyingCodeDetection);
 | 
			
		||||
 | 
			
		||||
@@ -108,6 +114,11 @@ ValgrindConfigWidget::ValgrindConfigWidget(ValgrindBaseSettings *settings)
 | 
			
		||||
    //
 | 
			
		||||
    m_ui->kcachegrindExeChooser->setExpectedKind(Utils::PathChooser::ExistingCommand);
 | 
			
		||||
    m_ui->kcachegrindExeChooser->setPromptDialogTitle(tr("KCachegrind Command"));
 | 
			
		||||
    connect(m_ui->callgrindArgumentsLineEdit, &QLineEdit::textChanged,
 | 
			
		||||
            m_settings, &ValgrindBaseSettings::setCallgrindArguments);
 | 
			
		||||
    connect(m_settings, &ValgrindBaseSettings::callgrindArgumentsChanged,
 | 
			
		||||
            m_ui->callgrindArgumentsLineEdit, &QLineEdit::setText);
 | 
			
		||||
 | 
			
		||||
    connect(m_ui->kcachegrindExeChooser, &Utils::PathChooser::rawPathChanged,
 | 
			
		||||
            m_settings, &ValgrindBaseSettings::setKCachegrindExecutable);
 | 
			
		||||
    connect(m_ui->enableCacheSim, &QCheckBox::toggled,
 | 
			
		||||
@@ -151,6 +162,11 @@ ValgrindConfigWidget::ValgrindConfigWidget(ValgrindBaseSettings *settings)
 | 
			
		||||
    m_ui->suppressionList->setModel(m_model);
 | 
			
		||||
    m_ui->suppressionList->setSelectionMode(QAbstractItemView::MultiSelection);
 | 
			
		||||
 | 
			
		||||
    connect(m_ui->memcheckArgumentsLineEdit, &QLineEdit::textChanged,
 | 
			
		||||
            m_settings, &ValgrindBaseSettings::setMemcheckArguments);
 | 
			
		||||
    connect(m_settings, &ValgrindBaseSettings::memcheckArgumentsChanged,
 | 
			
		||||
            m_ui->memcheckArgumentsLineEdit, &QLineEdit::setText);
 | 
			
		||||
 | 
			
		||||
    connect(m_ui->addSuppression, &QPushButton::clicked, this, &ValgrindConfigWidget::slotAddSuppression);
 | 
			
		||||
    connect(m_ui->removeSuppression, &QPushButton::clicked, this, &ValgrindConfigWidget::slotRemoveSuppression);
 | 
			
		||||
 | 
			
		||||
@@ -204,6 +220,9 @@ ValgrindConfigWidget::~ValgrindConfigWidget()
 | 
			
		||||
void ValgrindConfigWidget::updateUi()
 | 
			
		||||
{
 | 
			
		||||
    m_ui->valgrindExeChooser->setPath(m_settings->valgrindExecutable());
 | 
			
		||||
    m_ui->valgrindArgumentsLineEdit->setText(m_settings->valgrindArguments());
 | 
			
		||||
    m_ui->memcheckArgumentsLineEdit->setText(m_settings->memcheckArguments());
 | 
			
		||||
    m_ui->callgrindArgumentsLineEdit->setText(m_settings->callgrindArguments());
 | 
			
		||||
    m_ui->smcDetectionComboBox->setCurrentIndex(m_settings->selfModifyingCodeDetection());
 | 
			
		||||
    m_ui->kcachegrindExeChooser->setPath(m_settings->kcachegrindExecutable());
 | 
			
		||||
    m_ui->enableCacheSim->setChecked(m_settings->enableCacheSim());
 | 
			
		||||
 
 | 
			
		||||
@@ -6,8 +6,8 @@
 | 
			
		||||
   <rect>
 | 
			
		||||
    <x>0</x>
 | 
			
		||||
    <y>0</y>
 | 
			
		||||
    <width>708</width>
 | 
			
		||||
    <height>397</height>
 | 
			
		||||
    <width>727</width>
 | 
			
		||||
    <height>658</height>
 | 
			
		||||
   </rect>
 | 
			
		||||
  </property>
 | 
			
		||||
  <layout class="QGridLayout" name="gridLayout">
 | 
			
		||||
@@ -20,34 +20,10 @@
 | 
			
		||||
      </sizepolicy>
 | 
			
		||||
     </property>
 | 
			
		||||
     <property name="title">
 | 
			
		||||
      <string>Generic Settings</string>
 | 
			
		||||
      <string>Valgrind Generic Settings</string>
 | 
			
		||||
     </property>
 | 
			
		||||
     <layout class="QGridLayout" name="gridLayout_2">
 | 
			
		||||
      <item row="0" column="0">
 | 
			
		||||
       <widget class="QLabel" name="valgrindExeLabel">
 | 
			
		||||
        <property name="text">
 | 
			
		||||
         <string>Valgrind executable:</string>
 | 
			
		||||
        </property>
 | 
			
		||||
       </widget>
 | 
			
		||||
      </item>
 | 
			
		||||
      <item row="0" column="1">
 | 
			
		||||
       <widget class="Utils::PathChooser" name="valgrindExeChooser" native="true">
 | 
			
		||||
        <property name="sizePolicy">
 | 
			
		||||
         <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
 | 
			
		||||
          <horstretch>1</horstretch>
 | 
			
		||||
          <verstretch>0</verstretch>
 | 
			
		||||
         </sizepolicy>
 | 
			
		||||
        </property>
 | 
			
		||||
       </widget>
 | 
			
		||||
      </item>
 | 
			
		||||
      <item row="1" column="0">
 | 
			
		||||
       <widget class="QLabel" name="smcDetectionLabel">
 | 
			
		||||
        <property name="text">
 | 
			
		||||
         <string>Detect self-modifying code:</string>
 | 
			
		||||
        </property>
 | 
			
		||||
       </widget>
 | 
			
		||||
      </item>
 | 
			
		||||
      <item row="1" column="1">
 | 
			
		||||
      <item row="2" column="1">
 | 
			
		||||
       <layout class="QHBoxLayout" name="horizontalLayout_2">
 | 
			
		||||
        <item>
 | 
			
		||||
         <widget class="QComboBox" name="smcDetectionComboBox">
 | 
			
		||||
@@ -91,10 +67,249 @@
 | 
			
		||||
        </item>
 | 
			
		||||
       </layout>
 | 
			
		||||
      </item>
 | 
			
		||||
      <item row="0" column="0">
 | 
			
		||||
       <widget class="QLabel" name="valgrindExeLabel">
 | 
			
		||||
        <property name="text">
 | 
			
		||||
         <string>Valgrind executable:</string>
 | 
			
		||||
        </property>
 | 
			
		||||
       </widget>
 | 
			
		||||
      </item>
 | 
			
		||||
      <item row="0" column="1">
 | 
			
		||||
       <widget class="Utils::PathChooser" name="valgrindExeChooser" native="true">
 | 
			
		||||
        <property name="sizePolicy">
 | 
			
		||||
         <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
 | 
			
		||||
          <horstretch>1</horstretch>
 | 
			
		||||
          <verstretch>0</verstretch>
 | 
			
		||||
         </sizepolicy>
 | 
			
		||||
        </property>
 | 
			
		||||
       </widget>
 | 
			
		||||
      </item>
 | 
			
		||||
      <item row="2" column="0">
 | 
			
		||||
       <widget class="QLabel" name="smcDetectionLabel">
 | 
			
		||||
        <property name="text">
 | 
			
		||||
         <string>Detect self-modifying code:</string>
 | 
			
		||||
        </property>
 | 
			
		||||
       </widget>
 | 
			
		||||
      </item>
 | 
			
		||||
      <item row="1" column="0">
 | 
			
		||||
       <widget class="QLabel" name="valgrindArgumentsLabel">
 | 
			
		||||
        <property name="text">
 | 
			
		||||
         <string>Valgrind arguments:</string>
 | 
			
		||||
        </property>
 | 
			
		||||
       </widget>
 | 
			
		||||
      </item>
 | 
			
		||||
      <item row="1" column="1">
 | 
			
		||||
       <widget class="QLineEdit" name="valgrindArgumentsLineEdit"/>
 | 
			
		||||
      </item>
 | 
			
		||||
     </layout>
 | 
			
		||||
    </widget>
 | 
			
		||||
   </item>
 | 
			
		||||
   <item row="1" column="1">
 | 
			
		||||
   <item row="3" column="0">
 | 
			
		||||
    <spacer name="verticalSpacer">
 | 
			
		||||
     <property name="orientation">
 | 
			
		||||
      <enum>Qt::Vertical</enum>
 | 
			
		||||
     </property>
 | 
			
		||||
     <property name="sizeType">
 | 
			
		||||
      <enum>QSizePolicy::Expanding</enum>
 | 
			
		||||
     </property>
 | 
			
		||||
     <property name="sizeHint" stdset="0">
 | 
			
		||||
      <size>
 | 
			
		||||
       <width>1</width>
 | 
			
		||||
       <height>500</height>
 | 
			
		||||
      </size>
 | 
			
		||||
     </property>
 | 
			
		||||
    </spacer>
 | 
			
		||||
   </item>
 | 
			
		||||
   <item row="1" column="0">
 | 
			
		||||
    <widget class="QGroupBox" name="memcheckOptions">
 | 
			
		||||
     <property name="sizePolicy">
 | 
			
		||||
      <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
 | 
			
		||||
       <horstretch>0</horstretch>
 | 
			
		||||
       <verstretch>0</verstretch>
 | 
			
		||||
      </sizepolicy>
 | 
			
		||||
     </property>
 | 
			
		||||
     <property name="title">
 | 
			
		||||
      <string>MemCheck Memory Analysis Options</string>
 | 
			
		||||
     </property>
 | 
			
		||||
     <layout class="QFormLayout" name="formLayout">
 | 
			
		||||
      <item row="1" column="0" colspan="2">
 | 
			
		||||
       <widget class="QCheckBox" name="trackOrigins">
 | 
			
		||||
        <property name="text">
 | 
			
		||||
         <string>Track origins of uninitialized memory</string>
 | 
			
		||||
        </property>
 | 
			
		||||
        <property name="checked">
 | 
			
		||||
         <bool>true</bool>
 | 
			
		||||
        </property>
 | 
			
		||||
       </widget>
 | 
			
		||||
      </item>
 | 
			
		||||
      <item row="2" column="0" colspan="2">
 | 
			
		||||
       <widget class="QCheckBox" name="showReachable">
 | 
			
		||||
        <property name="text">
 | 
			
		||||
         <string>Show reachable and indirectly lost blocks</string>
 | 
			
		||||
        </property>
 | 
			
		||||
       </widget>
 | 
			
		||||
      </item>
 | 
			
		||||
      <item row="3" column="0">
 | 
			
		||||
       <widget class="QLabel" name="leakCheckOnFinishLabel">
 | 
			
		||||
        <property name="text">
 | 
			
		||||
         <string>Check for leaks on finish:</string>
 | 
			
		||||
        </property>
 | 
			
		||||
       </widget>
 | 
			
		||||
      </item>
 | 
			
		||||
      <item row="3" column="1">
 | 
			
		||||
       <layout class="QHBoxLayout" name="horizontalLayout_3">
 | 
			
		||||
        <item>
 | 
			
		||||
         <widget class="QComboBox" name="leakCheckOnFinish">
 | 
			
		||||
          <property name="currentIndex">
 | 
			
		||||
           <number>0</number>
 | 
			
		||||
          </property>
 | 
			
		||||
          <item>
 | 
			
		||||
           <property name="text">
 | 
			
		||||
            <string>No</string>
 | 
			
		||||
           </property>
 | 
			
		||||
          </item>
 | 
			
		||||
          <item>
 | 
			
		||||
           <property name="text">
 | 
			
		||||
            <string>Summary Only</string>
 | 
			
		||||
           </property>
 | 
			
		||||
          </item>
 | 
			
		||||
          <item>
 | 
			
		||||
           <property name="text">
 | 
			
		||||
            <string>Full</string>
 | 
			
		||||
           </property>
 | 
			
		||||
          </item>
 | 
			
		||||
         </widget>
 | 
			
		||||
        </item>
 | 
			
		||||
        <item>
 | 
			
		||||
         <spacer name="horizontalSpacer_2">
 | 
			
		||||
          <property name="orientation">
 | 
			
		||||
           <enum>Qt::Horizontal</enum>
 | 
			
		||||
          </property>
 | 
			
		||||
          <property name="sizeHint" stdset="0">
 | 
			
		||||
           <size>
 | 
			
		||||
            <width>40</width>
 | 
			
		||||
            <height>20</height>
 | 
			
		||||
           </size>
 | 
			
		||||
          </property>
 | 
			
		||||
         </spacer>
 | 
			
		||||
        </item>
 | 
			
		||||
       </layout>
 | 
			
		||||
      </item>
 | 
			
		||||
      <item row="4" column="0">
 | 
			
		||||
       <widget class="QLabel" name="numCallersLabel">
 | 
			
		||||
        <property name="text">
 | 
			
		||||
         <string>Backtrace frame count:</string>
 | 
			
		||||
        </property>
 | 
			
		||||
        <property name="buddy">
 | 
			
		||||
         <cstring>numCallers</cstring>
 | 
			
		||||
        </property>
 | 
			
		||||
       </widget>
 | 
			
		||||
      </item>
 | 
			
		||||
      <item row="4" column="1">
 | 
			
		||||
       <layout class="QHBoxLayout" name="horizontalLayout_4">
 | 
			
		||||
        <item>
 | 
			
		||||
         <widget class="QSpinBox" name="numCallers">
 | 
			
		||||
          <property name="minimum">
 | 
			
		||||
           <number>5</number>
 | 
			
		||||
          </property>
 | 
			
		||||
          <property name="maximum">
 | 
			
		||||
           <number>50</number>
 | 
			
		||||
          </property>
 | 
			
		||||
          <property name="value">
 | 
			
		||||
           <number>12</number>
 | 
			
		||||
          </property>
 | 
			
		||||
         </widget>
 | 
			
		||||
        </item>
 | 
			
		||||
        <item>
 | 
			
		||||
         <spacer name="horizontalSpacer_3">
 | 
			
		||||
          <property name="orientation">
 | 
			
		||||
           <enum>Qt::Horizontal</enum>
 | 
			
		||||
          </property>
 | 
			
		||||
          <property name="sizeHint" stdset="0">
 | 
			
		||||
           <size>
 | 
			
		||||
            <width>40</width>
 | 
			
		||||
            <height>20</height>
 | 
			
		||||
           </size>
 | 
			
		||||
          </property>
 | 
			
		||||
         </spacer>
 | 
			
		||||
        </item>
 | 
			
		||||
       </layout>
 | 
			
		||||
      </item>
 | 
			
		||||
      <item row="5" column="0">
 | 
			
		||||
       <widget class="QLabel" name="label">
 | 
			
		||||
        <property name="text">
 | 
			
		||||
         <string>Suppression files:</string>
 | 
			
		||||
        </property>
 | 
			
		||||
        <property name="buddy">
 | 
			
		||||
         <cstring>suppressionList</cstring>
 | 
			
		||||
        </property>
 | 
			
		||||
       </widget>
 | 
			
		||||
      </item>
 | 
			
		||||
      <item row="6" column="0" colspan="2">
 | 
			
		||||
       <layout class="QHBoxLayout" name="horizontalLayout">
 | 
			
		||||
        <item>
 | 
			
		||||
         <widget class="QListView" name="suppressionList">
 | 
			
		||||
          <property name="sizePolicy">
 | 
			
		||||
           <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
 | 
			
		||||
            <horstretch>0</horstretch>
 | 
			
		||||
            <verstretch>1</verstretch>
 | 
			
		||||
           </sizepolicy>
 | 
			
		||||
          </property>
 | 
			
		||||
         </widget>
 | 
			
		||||
        </item>
 | 
			
		||||
        <item>
 | 
			
		||||
         <layout class="QVBoxLayout" name="verticalLayout_2" stretch="0,0,1">
 | 
			
		||||
          <property name="sizeConstraint">
 | 
			
		||||
           <enum>QLayout::SetMinimumSize</enum>
 | 
			
		||||
          </property>
 | 
			
		||||
          <item>
 | 
			
		||||
           <widget class="QPushButton" name="addSuppression">
 | 
			
		||||
            <property name="text">
 | 
			
		||||
             <string>Add...</string>
 | 
			
		||||
            </property>
 | 
			
		||||
           </widget>
 | 
			
		||||
          </item>
 | 
			
		||||
          <item>
 | 
			
		||||
           <widget class="QPushButton" name="removeSuppression">
 | 
			
		||||
            <property name="text">
 | 
			
		||||
             <string>Remove</string>
 | 
			
		||||
            </property>
 | 
			
		||||
            <property name="flat">
 | 
			
		||||
             <bool>false</bool>
 | 
			
		||||
            </property>
 | 
			
		||||
           </widget>
 | 
			
		||||
          </item>
 | 
			
		||||
          <item>
 | 
			
		||||
           <spacer name="verticalSpacer_2">
 | 
			
		||||
            <property name="orientation">
 | 
			
		||||
             <enum>Qt::Vertical</enum>
 | 
			
		||||
            </property>
 | 
			
		||||
            <property name="sizeHint" stdset="0">
 | 
			
		||||
             <size>
 | 
			
		||||
              <width>20</width>
 | 
			
		||||
              <height>40</height>
 | 
			
		||||
             </size>
 | 
			
		||||
            </property>
 | 
			
		||||
           </spacer>
 | 
			
		||||
          </item>
 | 
			
		||||
         </layout>
 | 
			
		||||
        </item>
 | 
			
		||||
       </layout>
 | 
			
		||||
      </item>
 | 
			
		||||
      <item row="0" column="0">
 | 
			
		||||
       <widget class="QLabel" name="memcheckArgumentsLabel">
 | 
			
		||||
        <property name="text">
 | 
			
		||||
         <string>Extra MemCheck arguments:</string>
 | 
			
		||||
        </property>
 | 
			
		||||
       </widget>
 | 
			
		||||
      </item>
 | 
			
		||||
      <item row="0" column="1">
 | 
			
		||||
       <widget class="QLineEdit" name="memcheckArgumentsLineEdit"/>
 | 
			
		||||
      </item>
 | 
			
		||||
     </layout>
 | 
			
		||||
    </widget>
 | 
			
		||||
   </item>
 | 
			
		||||
   <item row="2" column="0">
 | 
			
		||||
    <widget class="QGroupBox" name="memcheckOptions_2">
 | 
			
		||||
     <property name="sizePolicy">
 | 
			
		||||
      <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
 | 
			
		||||
@@ -103,10 +318,10 @@
 | 
			
		||||
      </sizepolicy>
 | 
			
		||||
     </property>
 | 
			
		||||
     <property name="title">
 | 
			
		||||
      <string>Profiling Options</string>
 | 
			
		||||
      <string>CallGrind Profiling Options</string>
 | 
			
		||||
     </property>
 | 
			
		||||
     <layout class="QFormLayout" name="formLayout_2">
 | 
			
		||||
      <item row="1" column="0">
 | 
			
		||||
      <item row="2" column="0">
 | 
			
		||||
       <widget class="QLabel" name="minimumInclusiveCostRatioLabel">
 | 
			
		||||
        <property name="toolTip">
 | 
			
		||||
         <string>Limits the amount of results the profiler gives you. A lower limit will likely increase performance.</string>
 | 
			
		||||
@@ -119,7 +334,7 @@
 | 
			
		||||
        </property>
 | 
			
		||||
       </widget>
 | 
			
		||||
      </item>
 | 
			
		||||
      <item row="1" column="1">
 | 
			
		||||
      <item row="2" column="1">
 | 
			
		||||
       <widget class="QDoubleSpinBox" name="minimumInclusiveCostRatio">
 | 
			
		||||
        <property name="suffix">
 | 
			
		||||
         <string>%</string>
 | 
			
		||||
@@ -135,7 +350,7 @@
 | 
			
		||||
        </property>
 | 
			
		||||
       </widget>
 | 
			
		||||
      </item>
 | 
			
		||||
      <item row="3" column="0" colspan="2">
 | 
			
		||||
      <item row="4" column="0" colspan="2">
 | 
			
		||||
       <widget class="QGroupBox" name="enableEventToolTips">
 | 
			
		||||
        <property name="title">
 | 
			
		||||
         <string>Show additional information for events in tooltips</string>
 | 
			
		||||
@@ -203,14 +418,14 @@ With cache simulation, further event counters are enabled:
 | 
			
		||||
        </layout>
 | 
			
		||||
       </widget>
 | 
			
		||||
      </item>
 | 
			
		||||
      <item row="2" column="0">
 | 
			
		||||
      <item row="3" column="0">
 | 
			
		||||
       <widget class="QLabel" name="visualisationMinimumInclusiveCostRatioLabel">
 | 
			
		||||
        <property name="text">
 | 
			
		||||
         <string>Visualization: Minimum event cost:</string>
 | 
			
		||||
        </property>
 | 
			
		||||
       </widget>
 | 
			
		||||
      </item>
 | 
			
		||||
      <item row="2" column="1">
 | 
			
		||||
      <item row="3" column="1">
 | 
			
		||||
       <widget class="QDoubleSpinBox" name="visualisationMinimumInclusiveCostRatio">
 | 
			
		||||
        <property name="prefix">
 | 
			
		||||
         <string/>
 | 
			
		||||
@@ -226,14 +441,14 @@ With cache simulation, further event counters are enabled:
 | 
			
		||||
        </property>
 | 
			
		||||
       </widget>
 | 
			
		||||
      </item>
 | 
			
		||||
      <item row="0" column="0">
 | 
			
		||||
       <widget class="QLabel" name="label_2">
 | 
			
		||||
      <item row="1" column="0">
 | 
			
		||||
       <widget class="QLabel" name="kcachgrindExeLabel">
 | 
			
		||||
        <property name="text">
 | 
			
		||||
         <string>KCachegrind executable:</string>
 | 
			
		||||
        </property>
 | 
			
		||||
       </widget>
 | 
			
		||||
      </item>
 | 
			
		||||
      <item row="0" column="1">
 | 
			
		||||
      <item row="1" column="1">
 | 
			
		||||
       <widget class="Utils::PathChooser" name="kcachegrindExeChooser" native="true">
 | 
			
		||||
        <property name="sizePolicy">
 | 
			
		||||
         <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
 | 
			
		||||
@@ -243,200 +458,15 @@ With cache simulation, further event counters are enabled:
 | 
			
		||||
        </property>
 | 
			
		||||
       </widget>
 | 
			
		||||
      </item>
 | 
			
		||||
     </layout>
 | 
			
		||||
    </widget>
 | 
			
		||||
   </item>
 | 
			
		||||
   <item row="2" column="0">
 | 
			
		||||
    <spacer name="verticalSpacer">
 | 
			
		||||
     <property name="orientation">
 | 
			
		||||
      <enum>Qt::Vertical</enum>
 | 
			
		||||
     </property>
 | 
			
		||||
     <property name="sizeType">
 | 
			
		||||
      <enum>QSizePolicy::Expanding</enum>
 | 
			
		||||
     </property>
 | 
			
		||||
     <property name="sizeHint" stdset="0">
 | 
			
		||||
      <size>
 | 
			
		||||
       <width>1</width>
 | 
			
		||||
       <height>500</height>
 | 
			
		||||
      </size>
 | 
			
		||||
     </property>
 | 
			
		||||
    </spacer>
 | 
			
		||||
   </item>
 | 
			
		||||
   <item row="1" column="0">
 | 
			
		||||
    <widget class="QGroupBox" name="memcheckOptions">
 | 
			
		||||
     <property name="sizePolicy">
 | 
			
		||||
      <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
 | 
			
		||||
       <horstretch>0</horstretch>
 | 
			
		||||
       <verstretch>0</verstretch>
 | 
			
		||||
      </sizepolicy>
 | 
			
		||||
     </property>
 | 
			
		||||
     <property name="title">
 | 
			
		||||
      <string>Memory Analysis Options</string>
 | 
			
		||||
     </property>
 | 
			
		||||
     <layout class="QFormLayout" name="formLayout">
 | 
			
		||||
      <item row="0" column="0" colspan="2">
 | 
			
		||||
       <widget class="QCheckBox" name="trackOrigins">
 | 
			
		||||
      <item row="0" column="0">
 | 
			
		||||
       <widget class="QLabel" name="callgrindArgumentsLabel">
 | 
			
		||||
        <property name="text">
 | 
			
		||||
         <string>Track origins of uninitialized memory</string>
 | 
			
		||||
        </property>
 | 
			
		||||
        <property name="checked">
 | 
			
		||||
         <bool>true</bool>
 | 
			
		||||
         <string>Extra CallGrind arguments:</string>
 | 
			
		||||
        </property>
 | 
			
		||||
       </widget>
 | 
			
		||||
      </item>
 | 
			
		||||
      <item row="1" column="0" colspan="2">
 | 
			
		||||
       <widget class="QCheckBox" name="showReachable">
 | 
			
		||||
        <property name="text">
 | 
			
		||||
         <string>Show reachable and indirectly lost blocks</string>
 | 
			
		||||
        </property>
 | 
			
		||||
       </widget>
 | 
			
		||||
      </item>
 | 
			
		||||
      <item row="2" column="0">
 | 
			
		||||
       <widget class="QLabel" name="leakCheckOnFinishLabel">
 | 
			
		||||
        <property name="text">
 | 
			
		||||
         <string>Check for leaks on finish:</string>
 | 
			
		||||
        </property>
 | 
			
		||||
       </widget>
 | 
			
		||||
      </item>
 | 
			
		||||
      <item row="2" column="1">
 | 
			
		||||
       <layout class="QHBoxLayout" name="horizontalLayout_3">
 | 
			
		||||
        <item>
 | 
			
		||||
         <widget class="QComboBox" name="leakCheckOnFinish">
 | 
			
		||||
          <property name="currentIndex">
 | 
			
		||||
           <number>0</number>
 | 
			
		||||
          </property>
 | 
			
		||||
          <item>
 | 
			
		||||
           <property name="text">
 | 
			
		||||
            <string>No</string>
 | 
			
		||||
           </property>
 | 
			
		||||
          </item>
 | 
			
		||||
          <item>
 | 
			
		||||
           <property name="text">
 | 
			
		||||
            <string>Summary Only</string>
 | 
			
		||||
           </property>
 | 
			
		||||
          </item>
 | 
			
		||||
          <item>
 | 
			
		||||
           <property name="text">
 | 
			
		||||
            <string>Full</string>
 | 
			
		||||
           </property>
 | 
			
		||||
          </item>
 | 
			
		||||
         </widget>
 | 
			
		||||
        </item>
 | 
			
		||||
        <item>
 | 
			
		||||
         <spacer name="horizontalSpacer_2">
 | 
			
		||||
          <property name="orientation">
 | 
			
		||||
           <enum>Qt::Horizontal</enum>
 | 
			
		||||
          </property>
 | 
			
		||||
          <property name="sizeHint" stdset="0">
 | 
			
		||||
           <size>
 | 
			
		||||
            <width>40</width>
 | 
			
		||||
            <height>20</height>
 | 
			
		||||
           </size>
 | 
			
		||||
          </property>
 | 
			
		||||
         </spacer>
 | 
			
		||||
        </item>
 | 
			
		||||
       </layout>
 | 
			
		||||
      </item>
 | 
			
		||||
      <item row="3" column="0">
 | 
			
		||||
       <widget class="QLabel" name="numCallersLabel">
 | 
			
		||||
        <property name="text">
 | 
			
		||||
         <string>Backtrace frame count:</string>
 | 
			
		||||
        </property>
 | 
			
		||||
        <property name="buddy">
 | 
			
		||||
         <cstring>numCallers</cstring>
 | 
			
		||||
        </property>
 | 
			
		||||
       </widget>
 | 
			
		||||
      </item>
 | 
			
		||||
      <item row="3" column="1">
 | 
			
		||||
       <layout class="QHBoxLayout" name="horizontalLayout_4">
 | 
			
		||||
        <item>
 | 
			
		||||
         <widget class="QSpinBox" name="numCallers">
 | 
			
		||||
          <property name="minimum">
 | 
			
		||||
           <number>5</number>
 | 
			
		||||
          </property>
 | 
			
		||||
          <property name="maximum">
 | 
			
		||||
           <number>50</number>
 | 
			
		||||
          </property>
 | 
			
		||||
          <property name="value">
 | 
			
		||||
           <number>12</number>
 | 
			
		||||
          </property>
 | 
			
		||||
         </widget>
 | 
			
		||||
        </item>
 | 
			
		||||
        <item>
 | 
			
		||||
         <spacer name="horizontalSpacer_3">
 | 
			
		||||
          <property name="orientation">
 | 
			
		||||
           <enum>Qt::Horizontal</enum>
 | 
			
		||||
          </property>
 | 
			
		||||
          <property name="sizeHint" stdset="0">
 | 
			
		||||
           <size>
 | 
			
		||||
            <width>40</width>
 | 
			
		||||
            <height>20</height>
 | 
			
		||||
           </size>
 | 
			
		||||
          </property>
 | 
			
		||||
         </spacer>
 | 
			
		||||
        </item>
 | 
			
		||||
       </layout>
 | 
			
		||||
      </item>
 | 
			
		||||
      <item row="4" column="0">
 | 
			
		||||
       <widget class="QLabel" name="label">
 | 
			
		||||
        <property name="text">
 | 
			
		||||
         <string>Suppression files:</string>
 | 
			
		||||
        </property>
 | 
			
		||||
        <property name="buddy">
 | 
			
		||||
         <cstring>suppressionList</cstring>
 | 
			
		||||
        </property>
 | 
			
		||||
       </widget>
 | 
			
		||||
      </item>
 | 
			
		||||
      <item row="5" column="0" colspan="2">
 | 
			
		||||
       <layout class="QHBoxLayout" name="horizontalLayout">
 | 
			
		||||
        <item>
 | 
			
		||||
         <widget class="QListView" name="suppressionList">
 | 
			
		||||
          <property name="sizePolicy">
 | 
			
		||||
           <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
 | 
			
		||||
            <horstretch>0</horstretch>
 | 
			
		||||
            <verstretch>1</verstretch>
 | 
			
		||||
           </sizepolicy>
 | 
			
		||||
          </property>
 | 
			
		||||
         </widget>
 | 
			
		||||
        </item>
 | 
			
		||||
        <item>
 | 
			
		||||
         <layout class="QVBoxLayout" name="verticalLayout_2" stretch="0,0,1">
 | 
			
		||||
          <property name="sizeConstraint">
 | 
			
		||||
           <enum>QLayout::SetMinimumSize</enum>
 | 
			
		||||
          </property>
 | 
			
		||||
          <item>
 | 
			
		||||
           <widget class="QPushButton" name="addSuppression">
 | 
			
		||||
            <property name="text">
 | 
			
		||||
             <string>Add...</string>
 | 
			
		||||
            </property>
 | 
			
		||||
           </widget>
 | 
			
		||||
          </item>
 | 
			
		||||
          <item>
 | 
			
		||||
           <widget class="QPushButton" name="removeSuppression">
 | 
			
		||||
            <property name="text">
 | 
			
		||||
             <string>Remove</string>
 | 
			
		||||
            </property>
 | 
			
		||||
            <property name="flat">
 | 
			
		||||
             <bool>false</bool>
 | 
			
		||||
            </property>
 | 
			
		||||
           </widget>
 | 
			
		||||
          </item>
 | 
			
		||||
          <item>
 | 
			
		||||
           <spacer name="verticalSpacer_2">
 | 
			
		||||
            <property name="orientation">
 | 
			
		||||
             <enum>Qt::Vertical</enum>
 | 
			
		||||
            </property>
 | 
			
		||||
            <property name="sizeHint" stdset="0">
 | 
			
		||||
             <size>
 | 
			
		||||
              <width>20</width>
 | 
			
		||||
              <height>40</height>
 | 
			
		||||
             </size>
 | 
			
		||||
            </property>
 | 
			
		||||
           </spacer>
 | 
			
		||||
          </item>
 | 
			
		||||
         </layout>
 | 
			
		||||
        </item>
 | 
			
		||||
       </layout>
 | 
			
		||||
      <item row="0" column="1">
 | 
			
		||||
       <widget class="QLineEdit" name="callgrindArgumentsLineEdit"/>
 | 
			
		||||
      </item>
 | 
			
		||||
     </layout>
 | 
			
		||||
    </widget>
 | 
			
		||||
 
 | 
			
		||||
@@ -78,6 +78,7 @@ void ValgrindToolRunner::start()
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
    CommandLine valgrind{m_settings.valgrindExecutable()};
 | 
			
		||||
    valgrind.addArgs(m_settings.valgrindArguments(), CommandLine::Raw);
 | 
			
		||||
    valgrind.addArgs(genericToolArguments());
 | 
			
		||||
    valgrind.addArgs(toolArguments());
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -45,6 +45,7 @@ const char removedSuppressionFilesC[] = "Analyzer.Valgrind.RemovedSuppressionFil
 | 
			
		||||
const char addedSuppressionFilesC[] = "Analyzer.Valgrind.AddedSuppressionFiles";
 | 
			
		||||
const char filterExternalIssuesC[] = "Analyzer.Valgrind.FilterExternalIssues";
 | 
			
		||||
const char visibleErrorKindsC[] = "Analyzer.Valgrind.VisibleErrorKinds";
 | 
			
		||||
const char memcheckArgumentsC[] = "Analyzer.Valgrind.Memcheck.Arguments";
 | 
			
		||||
 | 
			
		||||
const char lastSuppressionDirectoryC[] = "Analyzer.Valgrind.LastSuppressionDirectory";
 | 
			
		||||
const char lastSuppressionHistoryC[] = "Analyzer.Valgrind.LastSuppressionHistory";
 | 
			
		||||
@@ -61,8 +62,10 @@ const char callgrindVisualisationMinimumCostRatioC[] = "Analyzer.Valgrind.Callgr
 | 
			
		||||
const char callgrindCycleDetectionC[] = "Analyzer.Valgrind.Callgrind.CycleDetection";
 | 
			
		||||
const char callgrindShortenTemplates[] = "Analyzer.Valgrind.Callgrind.ShortenTemplates";
 | 
			
		||||
const char callgrindCostFormatC[] = "Analyzer.Valgrind.Callgrind.CostFormat";
 | 
			
		||||
const char callgrindArgumentsC[] = "Analyzer.Valgrind.Callgrind.Arguments";
 | 
			
		||||
 | 
			
		||||
const char valgrindExeC[] = "Analyzer.Valgrind.ValgrindExecutable";
 | 
			
		||||
const char valgrindArgumentsC[] = "Analyzer.Valgrind.ValgrindArguments";
 | 
			
		||||
 | 
			
		||||
namespace Valgrind {
 | 
			
		||||
namespace Internal {
 | 
			
		||||
@@ -88,11 +91,13 @@ void ValgrindBaseSettings::fromMap(const QVariantMap &map)
 | 
			
		||||
{
 | 
			
		||||
    // General
 | 
			
		||||
    setIfPresent(map, valgrindExeC, &m_valgrindExecutable);
 | 
			
		||||
    setIfPresent(map, valgrindArgumentsC, &m_valgrindArguments);
 | 
			
		||||
    setIfPresent(map, selfModifyingCodeDetectionC,
 | 
			
		||||
                 (int*) &m_selfModifyingCodeDetection);
 | 
			
		||||
 | 
			
		||||
    // Memcheck
 | 
			
		||||
    setIfPresent(map, numCallersC, &m_numCallers);
 | 
			
		||||
    setIfPresent(map, memcheckArgumentsC, &m_memcheckArguments);
 | 
			
		||||
    setIfPresent(map, leakCheckOnFinishC, (int*) &m_leakCheckOnFinish);
 | 
			
		||||
    setIfPresent(map, showReachableC, &m_showReachable);
 | 
			
		||||
    setIfPresent(map, trackOriginsC, &m_trackOrigins);
 | 
			
		||||
@@ -104,6 +109,7 @@ void ValgrindBaseSettings::fromMap(const QVariantMap &map)
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    // Callgrind
 | 
			
		||||
    setIfPresent(map, callgrindArgumentsC, &m_callgrindArguments);
 | 
			
		||||
    setIfPresent(map, kcachegrindExeC, &m_kcachegrindExecutable);
 | 
			
		||||
    setIfPresent(map, callgrindEnableCacheSimC, &m_enableCacheSim);
 | 
			
		||||
    setIfPresent(map, callgrindEnableBranchSimC, &m_enableBranchSim);
 | 
			
		||||
@@ -121,9 +127,11 @@ void ValgrindBaseSettings::toMap(QVariantMap &map) const
 | 
			
		||||
{
 | 
			
		||||
    // General
 | 
			
		||||
    map.insert(valgrindExeC, m_valgrindExecutable);
 | 
			
		||||
    map.insert(valgrindArgumentsC, m_valgrindArguments);
 | 
			
		||||
    map.insert(selfModifyingCodeDetectionC, m_selfModifyingCodeDetection);
 | 
			
		||||
 | 
			
		||||
    // Memcheck
 | 
			
		||||
    map.insert(memcheckArgumentsC, m_memcheckArguments);
 | 
			
		||||
    map.insert(numCallersC, m_numCallers);
 | 
			
		||||
    map.insert(leakCheckOnFinishC, m_leakCheckOnFinish);
 | 
			
		||||
    map.insert(showReachableC, m_showReachable);
 | 
			
		||||
@@ -135,6 +143,7 @@ void ValgrindBaseSettings::toMap(QVariantMap &map) const
 | 
			
		||||
    map.insert(visibleErrorKindsC, errorKinds);
 | 
			
		||||
 | 
			
		||||
    // Callgrind
 | 
			
		||||
    map.insert(callgrindArgumentsC, m_callgrindArguments);
 | 
			
		||||
    map.insert(kcachegrindExeC, m_kcachegrindExecutable);
 | 
			
		||||
    map.insert(callgrindEnableCacheSimC, m_enableCacheSim);
 | 
			
		||||
    map.insert(callgrindEnableBranchSimC, m_enableBranchSim);
 | 
			
		||||
@@ -151,6 +160,14 @@ void ValgrindBaseSettings::setValgrindExecutable(const QString &valgrindExecutab
 | 
			
		||||
    m_valgrindExecutable = valgrindExecutable;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void ValgrindBaseSettings::setValgrindArguments(const QString &arguments)
 | 
			
		||||
{
 | 
			
		||||
    if (m_valgrindArguments != arguments) {
 | 
			
		||||
        m_valgrindArguments = arguments;
 | 
			
		||||
        emit valgrindArgumentsChanged(arguments);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void ValgrindBaseSettings::setSelfModifyingCodeDetection(int smcDetection)
 | 
			
		||||
{
 | 
			
		||||
    if (m_selfModifyingCodeDetection != smcDetection) {
 | 
			
		||||
@@ -159,6 +176,14 @@ void ValgrindBaseSettings::setSelfModifyingCodeDetection(int smcDetection)
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void ValgrindBaseSettings::setMemcheckArguments(const QString &arguments)
 | 
			
		||||
{
 | 
			
		||||
    if (m_memcheckArguments != arguments) {
 | 
			
		||||
        m_memcheckArguments = arguments;
 | 
			
		||||
        emit memcheckArgumentsChanged(arguments);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
QString ValgrindBaseSettings::valgrindExecutable() const
 | 
			
		||||
{
 | 
			
		||||
    return m_valgrindExecutable;
 | 
			
		||||
@@ -222,6 +247,14 @@ QString ValgrindBaseSettings::kcachegrindExecutable() const
 | 
			
		||||
    return m_kcachegrindExecutable;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void ValgrindBaseSettings::setCallgrindArguments(const QString &arguments)
 | 
			
		||||
{
 | 
			
		||||
    if (m_callgrindArguments != arguments) {
 | 
			
		||||
        m_callgrindArguments = arguments;
 | 
			
		||||
        emit callgrindArgumentsChanged(arguments);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void ValgrindBaseSettings::setKCachegrindExecutable(const QString &exec)
 | 
			
		||||
{
 | 
			
		||||
    m_kcachegrindExecutable = exec;
 | 
			
		||||
@@ -396,9 +429,11 @@ void ValgrindGlobalSettings::readSettings()
 | 
			
		||||
 | 
			
		||||
    // General
 | 
			
		||||
    defaults.insert(valgrindExeC, "valgrind");
 | 
			
		||||
    defaults.insert(valgrindArgumentsC, QString());
 | 
			
		||||
    defaults.insert(selfModifyingCodeDetectionC, DetectSmcStackOnly);
 | 
			
		||||
 | 
			
		||||
    // Memcheck
 | 
			
		||||
    defaults.insert(memcheckArgumentsC, QString());
 | 
			
		||||
    defaults.insert(numCallersC, 25);
 | 
			
		||||
    defaults.insert(leakCheckOnFinishC, LeakCheckOnFinishSummaryOnly);
 | 
			
		||||
    defaults.insert(showReachableC, false);
 | 
			
		||||
@@ -414,6 +449,7 @@ void ValgrindGlobalSettings::readSettings()
 | 
			
		||||
    defaults.insert(lastSuppressionHistoryC, QStringList());
 | 
			
		||||
 | 
			
		||||
    // Callgrind
 | 
			
		||||
    defaults.insert(callgrindArgumentsC, QString());
 | 
			
		||||
    defaults.insert(kcachegrindExeC, "kcachegrind");
 | 
			
		||||
    defaults.insert(callgrindEnableCacheSimC, false);
 | 
			
		||||
    defaults.insert(callgrindEnableBranchSimC, false);
 | 
			
		||||
 
 | 
			
		||||
@@ -72,16 +72,20 @@ signals:
 | 
			
		||||
 */
 | 
			
		||||
public:
 | 
			
		||||
    QString valgrindExecutable() const;
 | 
			
		||||
    QString valgrindArguments() const { return m_valgrindArguments; }
 | 
			
		||||
    SelfModifyingCodeDetection selfModifyingCodeDetection() const;
 | 
			
		||||
 | 
			
		||||
    void setValgrindExecutable(const QString &);
 | 
			
		||||
    void setValgrindArguments(const QString &arguments);
 | 
			
		||||
    void setSelfModifyingCodeDetection(int);
 | 
			
		||||
 | 
			
		||||
signals:
 | 
			
		||||
    void valgrindArgumentsChanged(const QString &arguments);
 | 
			
		||||
    void selfModifyingCodeDetectionChanged(int);
 | 
			
		||||
 | 
			
		||||
private:
 | 
			
		||||
    QString m_valgrindExecutable;
 | 
			
		||||
    QString m_valgrindArguments;
 | 
			
		||||
    SelfModifyingCodeDetection m_selfModifyingCodeDetection;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@@ -89,6 +93,7 @@ private:
 | 
			
		||||
 * Base memcheck settings
 | 
			
		||||
 */
 | 
			
		||||
public:
 | 
			
		||||
    QString memcheckArguments() const { return m_memcheckArguments; }
 | 
			
		||||
    int numCallers() const { return m_numCallers; }
 | 
			
		||||
    LeakCheckOnFinish leakCheckOnFinish() const { return m_leakCheckOnFinish; }
 | 
			
		||||
    bool showReachable() const { return m_showReachable; }
 | 
			
		||||
@@ -100,6 +105,7 @@ public:
 | 
			
		||||
    virtual void addSuppressionFiles(const QStringList &) = 0;
 | 
			
		||||
    virtual void removeSuppressionFiles(const QStringList &) = 0;
 | 
			
		||||
 | 
			
		||||
    void setMemcheckArguments(const QString &arguments);
 | 
			
		||||
    void setNumCallers(int);
 | 
			
		||||
    void setLeakCheckOnFinish(int);
 | 
			
		||||
    void setShowReachable(bool);
 | 
			
		||||
@@ -108,6 +114,7 @@ public:
 | 
			
		||||
    void setVisibleErrorKinds(const QList<int> &);
 | 
			
		||||
 | 
			
		||||
signals:
 | 
			
		||||
    void memcheckArgumentsChanged(const QString &arguments);
 | 
			
		||||
    void numCallersChanged(int);
 | 
			
		||||
    void leakCheckOnFinishChanged(int);
 | 
			
		||||
    void showReachableChanged(bool);
 | 
			
		||||
@@ -118,6 +125,7 @@ signals:
 | 
			
		||||
    void suppressionFilesAdded(const QStringList &);
 | 
			
		||||
 | 
			
		||||
protected:
 | 
			
		||||
    QString m_memcheckArguments;
 | 
			
		||||
    int m_numCallers;
 | 
			
		||||
    LeakCheckOnFinish m_leakCheckOnFinish;
 | 
			
		||||
    bool m_showReachable;
 | 
			
		||||
@@ -129,6 +137,7 @@ protected:
 | 
			
		||||
 * Base callgrind settings
 | 
			
		||||
 */
 | 
			
		||||
public:
 | 
			
		||||
    QString callgrindArguments() const { return m_callgrindArguments;}
 | 
			
		||||
    QString kcachegrindExecutable() const;
 | 
			
		||||
 | 
			
		||||
    bool enableCacheSim() const { return m_enableCacheSim; }
 | 
			
		||||
@@ -143,6 +152,7 @@ public:
 | 
			
		||||
    /// \return Minimum cost ratio, range [0.0..100.0]
 | 
			
		||||
    double visualisationMinimumInclusiveCostRatio() const { return m_visualisationMinimumInclusiveCostRatio; }
 | 
			
		||||
 | 
			
		||||
    void setCallgrindArguments(const QString &arguments);
 | 
			
		||||
    void setKCachegrindExecutable(const QString &exec);
 | 
			
		||||
    void setEnableCacheSim(bool enable);
 | 
			
		||||
    void setEnableBranchSim(bool enable);
 | 
			
		||||
@@ -157,6 +167,7 @@ public:
 | 
			
		||||
    void setVisualisationMinimumInclusiveCostRatio(double minimumInclusiveCostRatio);
 | 
			
		||||
 | 
			
		||||
signals:
 | 
			
		||||
    void callgrindArgumentsChanged(const QString &argumnts);
 | 
			
		||||
    void enableCacheSimChanged(bool);
 | 
			
		||||
    void enableBranchSimChanged(bool);
 | 
			
		||||
    void collectSystimeChanged(bool);
 | 
			
		||||
@@ -166,6 +177,7 @@ signals:
 | 
			
		||||
    void visualisationMinimumInclusiveCostRatioChanged(double);
 | 
			
		||||
 | 
			
		||||
private:
 | 
			
		||||
    QString m_callgrindArguments;
 | 
			
		||||
    QString m_kcachegrindExecutable;
 | 
			
		||||
    bool m_enableCacheSim;
 | 
			
		||||
    bool m_collectSystime;
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user