ATLAS Offline Software
ValgrindAuditor.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 #ifndef VALKYRIE_VALGRINDAUDITOR_H
6 #define VALKYRIE_VALGRINDAUDITOR_H
7 
8 // STL/Boost includes
9 #include <string>
10 #include <vector>
11 #include <utility>
12 #include <boost/regex.hpp>
13 
14 // FrameWork includes
15 #include "Gaudi/Auditor.h"
16 #include "GaudiKernel/ServiceHandle.h"
17 #include "GaudiKernel/IIncidentListener.h"
18 #include "GAUDI_VERSION.h"
19 
20 // Forward declaration
21 class INamedInterface;
22 class IValgrindSvc;
23 
33 
34 class ValgrindAuditor : public Gaudi::Auditor,
35  virtual public IIncidentListener
36 {
37 public:
38  ValgrindAuditor(const std::string& name, ISvcLocator* pSvcLocator);
39  virtual ~ValgrindAuditor();
40 
41  virtual StatusCode initialize() override;
42 
44  virtual void handle( const Incident& incident ) override;
45 
47 
48  virtual void before(const std::string& event, const std::string& name,
49  const EventContext& ctx) override;
50 
51  virtual void after(const std::string& event, const std::string& name,
52  const EventContext& ctx, const StatusCode& sc) override;
54 
55 
57  virtual void do_beforeExecute(const std::string& name);
58 
60  virtual void do_afterExecute(const std::string& name);
61 
62 public:
64  typedef std::pair<boost::regex,std::string> NameEvt;
65 
66 
67 private:
70 
72  std::vector<std::string> m_algs;
73 
75  std::vector<std::string> m_intervals;
76 
78  unsigned int m_ignoreFirstNEvents;
79 
82 
84  unsigned int m_eventCounter;
85 
87  std::vector<boost::regex> m_algsRegEx;
88 
90  std::vector< std::pair<NameEvt,NameEvt> > m_hooks;
91 
92  void do_before(const std::string& name, const std::string& hook);
93  void do_after(const std::string& name, const std::string& hook);
95 
96  bool algMatch(const std::string& name);
97 };
98 
99 #endif
ValgrindAuditor::decodeIntervals
StatusCode decodeIntervals()
Definition: ValgrindAuditor.cxx:279
ValgrindAuditor::before
virtual void before(const std::string &event, const std::string &name, const EventContext &ctx) override
Definition: ValgrindAuditor.cxx:163
ValgrindAuditor::m_algs
std::vector< std::string > m_algs
List of algorithms to profile.
Definition: ValgrindAuditor.h:72
ValgrindAuditor::m_algsRegEx
std::vector< boost::regex > m_algsRegEx
Regular expressions for algorithm name matching.
Definition: ValgrindAuditor.h:87
ValgrindAuditor::m_valSvc
ServiceHandle< IValgrindSvc > m_valSvc
Handle to ValgrindSvc.
Definition: ValgrindAuditor.h:69
ValgrindAuditor::m_ignoreFirstNEvents
unsigned int m_ignoreFirstNEvents
Don't profile on the first N events.
Definition: ValgrindAuditor.h:78
ValgrindAuditor::ValgrindAuditor
ValgrindAuditor(const std::string &name, ISvcLocator *pSvcLocator)
Definition: ValgrindAuditor.cxx:24
ValgrindAuditor::m_hooks
std::vector< std::pair< NameEvt, NameEvt > > m_hooks
Internal storage of intervals.
Definition: ValgrindAuditor.h:90
AthenaPoolTestRead.sc
sc
Definition: AthenaPoolTestRead.py:27
ValgrindAuditor::m_dumpAfterEachInterval
bool m_dumpAfterEachInterval
Dump profile after each interval.
Definition: ValgrindAuditor.h:81
ValgrindAuditor::NameEvt
std::pair< boost::regex, std::string > NameEvt
Typedef for algorithm/event pair, e.g. ("MyAlg","initialize")
Definition: ValgrindAuditor.h:64
ValgrindAuditor::m_eventCounter
unsigned int m_eventCounter
Internal event counter for BeginEvent incident.
Definition: ValgrindAuditor.h:84
event
POOL::TEvent event(POOL::TEvent::kClassAccess)
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
ValgrindAuditor::handle
virtual void handle(const Incident &incident) override
Incident handler.
Definition: ValgrindAuditor.cxx:144
IValgrindSvc
Abstract interface for ValgrindSvc.
Definition: IValgrindSvc.h:23
ValgrindAuditor::after
virtual void after(const std::string &event, const std::string &name, const EventContext &ctx, const StatusCode &sc) override
Definition: ValgrindAuditor.cxx:170
ValgrindAuditor::algMatch
bool algMatch(const std::string &name)
Definition: ValgrindAuditor.cxx:314
ValgrindAuditor::do_after
void do_after(const std::string &name, const std::string &hook)
Definition: ValgrindAuditor.cxx:232
ValgrindAuditor::do_before
void do_before(const std::string &name, const std::string &hook)
Definition: ValgrindAuditor.cxx:214
ValgrindAuditor
Valgrind auditor.
Definition: ValgrindAuditor.h:36
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:240
ValgrindAuditor::m_intervals
std::vector< std::string > m_intervals
List of auditor intervals to profile.
Definition: ValgrindAuditor.h:75
ValgrindAuditor::initialize
virtual StatusCode initialize() override
Definition: ValgrindAuditor.cxx:49
ValgrindAuditor::do_beforeExecute
virtual void do_beforeExecute(const std::string &name)
Start callgrind instrumentation.
Definition: ValgrindAuditor.cxx:181
ValgrindAuditor::~ValgrindAuditor
virtual ~ValgrindAuditor()
Definition: ValgrindAuditor.cxx:44
ValgrindAuditor::do_afterExecute
virtual void do_afterExecute(const std::string &name)
Stop callgrind instrumentation.
Definition: ValgrindAuditor.cxx:198
ServiceHandle< IValgrindSvc >