⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 valgrind_options_page.cpp

📁 Linux平台下的内核及程序调试器
💻 CPP
📖 第 1 页 / 共 2 页
字号:
   tabWidget->addTab( tabSupps, " Suppressions " );   ContextHelp::add( tabSupps, urlValkyrie::suppsTab );   /* tabSupps - vbox */   QVBoxLayout* supp_vbox = new QVBoxLayout( tabSupps, 10, 25, "supp_vbox" );   m_itemList.insert( Valgrind::SUPPS_DIRS,                /* listbox */                      optionWidget( Valgrind::SUPPS_DIRS, tabSupps, true ) );   m_itemList.insert( Valgrind::SUPPS_AVAIL,                 /* listbox */                      optionWidget( Valgrind::SUPPS_AVAIL, tabSupps, true ) );   m_itemList.insert( Valgrind::SUPPS_SEL,                 /* listbox */                      optionWidget( Valgrind::SUPPS_SEL, tabSupps, true ) );   /*     NOTE: suppression listbox widgets have knowledge about what they           are and what they should do.  Ick, fix asap!   */   LbWidget* lbDirs  = (LbWidget*)m_itemList[Valgrind::SUPPS_DIRS];   LbWidget* lbAvail = (LbWidget*)m_itemList[Valgrind::SUPPS_AVAIL];   LbWidget* lbSel   = (LbWidget*)m_itemList[Valgrind::SUPPS_SEL];   /* lbDirs updates lbAvail */   connect( lbDirs,  SIGNAL(listChanged()),             this,      SLOT(suppDirsChanged()) );   /* lbSel and lbAvail update each other */   connect( lbAvail, SIGNAL(itemSelected(const QString&)),             this,      SLOT(updateSuppsSel(const QString&)) );   connect( lbSel,   SIGNAL(listChanged()),             this,      SLOT(updateSuppsAvail()) );   supp_vbox->addLayout( m_itemList[Valgrind::SUPPS_DIRS ]->vlayout(), 20 );   supp_vbox->addLayout( m_itemList[Valgrind::SUPPS_AVAIL]->vlayout(), 30 );   supp_vbox->addLayout( m_itemList[Valgrind::SUPPS_SEL  ]->vlayout(), 20 );   supp_vbox->addStretch( m_space );   /* finalise page ------------------------------------------------- */   vk_assert( m_itemList.count() <= numItems );   QIntDictIterator<OptionWidget> it( m_itemList );   for ( ;  it.current(); ++it ) {      connect(it.current(), SIGNAL(valueChanged( bool, OptionWidget * )),              this,         SLOT(updateEditList( bool, OptionWidget * )));   }   /* Disabled Widgets ---------------------------------------------- */   /* These widgets are disabled because Valkyrie uses      --log-file-exactly internally: logging options would interfere      with this. */	// error reporting tab   m_itemList[Valgrind::LOG_FD     ]->setEnabled( false );   m_itemList[Valgrind::LOG_PID    ]->setEnabled( false );   m_itemList[Valgrind::LOG_FILE   ]->setEnabled( false );   m_itemList[Valgrind::LOG_SOCKET ]->setEnabled( false );//   m_itemList[Valgrind::LOG_QUAL   ]->setEnabled( false );   /* Disabled because Valkyrie always requires xml output from Valgrind */   m_itemList[Valgrind::XML_OUTPUT ]->setEnabled( false );   /* Disabled for now: Only supporting memcheck so far. */   m_itemList[Valgrind::TOOL       ]->setEnabled( false );   /* Disabled for now - can't deal with the multiple xml files this generates */   /* Note: Also disabled in Valgrind::checkOptArg() */   m_itemList[Valgrind::TRACE_CH   ]->setEnabled( false );   /* Disabled for now - not yet implemented */   m_itemList[Valgrind::INPUT_FD   ]->setEnabled( false );   /* Disabled for now - Valgrind presets these options for XML output      - See valgrind/docs/internals/xml_output.txt */   m_itemList[Valgrind::VERBOSITY  ]->setEnabled( false );   m_itemList[Valgrind::TRACK_FDS  ]->setEnabled( false );   m_itemList[Valgrind::EM_WARNS   ]->setEnabled( false );   m_itemList[Valgrind::GEN_SUPP   ]->setEnabled( false );   m_itemList[Valgrind::ERROR_LIMIT]->setEnabled( false );   m_itemList[Valgrind::DB_ATTACH  ]->setEnabled( false );   m_itemList[Valgrind::DB_COMMAND ]->setEnabled( false );   dbLedit->button()->setEnabled( false );}/* Called from OptionsWindow::categoryClicked() */void ValgrindOptionsPage::init(){   /* if usr gave suppfile on cmdline (updating lbSel)      - update suppDirs, suppsAvail from each path in lbSel */   QChar       sep       = vkConfig->sepChar();   LbWidget*   lbSel     = (LbWidget*)m_itemList[Valgrind::SUPPS_SEL  ];   QStringList currSupps = QStringList::split( sep, lbSel->currValue() );   LbWidget*   lbDirs    = (LbWidget*)m_itemList[Valgrind::SUPPS_DIRS];   QStringList suppDirs  = QStringList::split( sep, lbDirs->currValue() );   for ( unsigned int i=0; i<currSupps.count(); i++ ) {      QFileInfo fi( currSupps[i] );      QString path = fi.dirPath();      if ( suppDirs.find( path ) == suppDirs.end() )         suppDirs << path;   }   lbDirs->setCurrValue( suppDirs.join( sep ) );   /* apply changes to lbDirs */   applyEdits();   /* init suppsAvail */   suppDirsChanged();}/* called when user clicks "Apply" / "Ok" / "Reset" buttons. */void ValgrindOptionsPage::applyOption( int optId ){    vk_assert( optId >= 0 && optId < Valgrind::NUM_OPTS );//   QString argval = m_itemList[optId]->currValue();   /* apply option */   switch ( optId ) {   default:      break;   }}void ValgrindOptionsPage::getDbBin(){   vkPrintErr("TODO: ValgrindOptionsPage::getDbBin()\n");}void ValgrindOptionsPage::dummy(){ VK_DEBUG("slot dummy()\n"); }/* Scan dirs set in option "valgrind::supps-dirs" for available   suppression files.   Update other widgets with result.*/void ValgrindOptionsPage::suppDirsChanged(){   m_allAvailSuppFiles = QStringList();   LbWidget* lbDirs  = (LbWidget*)m_itemList[Valgrind::SUPPS_DIRS];   QChar m_sep = vkConfig->sepChar();   /* Get list of dirs from "valgrind::supps-dirs" */   QStringList suppDirs = QStringList::split( m_sep, lbDirs->currValue() );   for ( unsigned int i=0; i<suppDirs.count(); i++ ) {      /* for each suppDir, find all supp files */      QDir suppDir( suppDirs[i] );      QString path = suppDir.absPath() + '/';      QStringList entries = suppDir.entryList( "*.supp", QDir::Files );      for (unsigned int i=0; i<entries.count(); i++) {         m_allAvailSuppFiles += (path + entries[i]);      }   }   updateSuppsAvail();}/* Given available suppfiles from dirscan,   remove those already selected in option "valgrind::supps-sel"   Set suppsAvail list with result.*/void ValgrindOptionsPage::updateSuppsAvail(){   QChar       m_sep      = vkConfig->sepChar();   LbWidget*   lbAvail    = (LbWidget*)m_itemList[Valgrind::SUPPS_AVAIL];   LbWidget*   lbSel      = (LbWidget*)m_itemList[Valgrind::SUPPS_SEL  ];   QStringList suppsAvail = m_allAvailSuppFiles;   QStringList currSupps  = QStringList::split( m_sep, lbSel->currValue() );   for ( unsigned int i=0; i<currSupps.count(); i++ ) {      QStringList::iterator it = suppsAvail.find( currSupps[i] );      if ( it != suppsAvail.end() ) {         suppsAvail.remove( it );      }   }   lbAvail->setCurrValue( suppsAvail.join( m_sep ) );}/* Called by selecting an item in suppsAvail listbox.   Adds item to selected supps listbox (up to limit)*/void ValgrindOptionsPage::updateSuppsSel(const QString& suppr){   LbWidget* lbSel = (LbWidget*)m_itemList[Valgrind::SUPPS_SEL];   if (((QListBox*)lbSel->widget())->numRows() < VG_CLO_MAX_SFILES) {      lbSel->insertItem(suppr);   } else {      /* valgrind doesn't accept any more suppression files */      vkError( this, "Error",               "Valgrind won't accept more than %d suppression files",                VG_CLO_MAX_SFILES );         }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -