lldb-perf-stepping.cpp revision 9de4dec874148d30cc1d4c498d38cd048a8164ca
1a3df3b0c89ab584262098f8d877e8a72e3614a08Jim Ingham#include <CoreFoundation/CoreFoundation.h> 2a3df3b0c89ab584262098f8d877e8a72e3614a08Jim Ingham 3a3df3b0c89ab584262098f8d877e8a72e3614a08Jim Ingham#include "lldb-perf/lib/Timer.h" 4a3df3b0c89ab584262098f8d877e8a72e3614a08Jim Ingham#include "lldb-perf/lib/Metric.h" 5a3df3b0c89ab584262098f8d877e8a72e3614a08Jim Ingham#include "lldb-perf/lib/Measurement.h" 6a3df3b0c89ab584262098f8d877e8a72e3614a08Jim Ingham#include "lldb-perf/lib/TestCase.h" 7a3df3b0c89ab584262098f8d877e8a72e3614a08Jim Ingham#include "lldb-perf/lib/Xcode.h" 8a3df3b0c89ab584262098f8d877e8a72e3614a08Jim Ingham 9a3df3b0c89ab584262098f8d877e8a72e3614a08Jim Ingham#include <unistd.h> 10a3df3b0c89ab584262098f8d877e8a72e3614a08Jim Ingham#include <string> 11a3df3b0c89ab584262098f8d877e8a72e3614a08Jim Ingham 12a3df3b0c89ab584262098f8d877e8a72e3614a08Jim Inghamusing namespace lldb_perf; 13a3df3b0c89ab584262098f8d877e8a72e3614a08Jim Ingham 14a3df3b0c89ab584262098f8d877e8a72e3614a08Jim Inghamclass StepTest : public TestCase 15a3df3b0c89ab584262098f8d877e8a72e3614a08Jim Ingham{ 16a3df3b0c89ab584262098f8d877e8a72e3614a08Jim Inghampublic: 17a3df3b0c89ab584262098f8d877e8a72e3614a08Jim Ingham StepTest() : 18a3df3b0c89ab584262098f8d877e8a72e3614a08Jim Ingham m_do_one_step_over_measurement (std::function<void(StepTest &, int)>(&StepTest::DoOneStep)) 19a3df3b0c89ab584262098f8d877e8a72e3614a08Jim Ingham { 20a3df3b0c89ab584262098f8d877e8a72e3614a08Jim Ingham } 21a3df3b0c89ab584262098f8d877e8a72e3614a08Jim Ingham 22a3df3b0c89ab584262098f8d877e8a72e3614a08Jim Ingham virtual 23a3df3b0c89ab584262098f8d877e8a72e3614a08Jim Ingham ~StepTest() {} 24a3df3b0c89ab584262098f8d877e8a72e3614a08Jim Ingham 259de4dec874148d30cc1d4c498d38cd048a8164caGreg Clayton virtual bool 26a3df3b0c89ab584262098f8d877e8a72e3614a08Jim Ingham Setup (int argc, const char **argv) 27a3df3b0c89ab584262098f8d877e8a72e3614a08Jim Ingham { 28a3df3b0c89ab584262098f8d877e8a72e3614a08Jim Ingham m_app_path.assign(argv[1]); 29a3df3b0c89ab584262098f8d877e8a72e3614a08Jim Ingham m_out_path.assign(argv[2]); 30a3df3b0c89ab584262098f8d877e8a72e3614a08Jim Ingham TestCase::Setup (argc, argv); 31a3df3b0c89ab584262098f8d877e8a72e3614a08Jim Ingham 32a3df3b0c89ab584262098f8d877e8a72e3614a08Jim Ingham m_target = m_debugger.CreateTarget(m_app_path.c_str()); 33a3df3b0c89ab584262098f8d877e8a72e3614a08Jim Ingham const char* file_arg = m_app_path.c_str(); 34a3df3b0c89ab584262098f8d877e8a72e3614a08Jim Ingham const char* empty = nullptr; 35a3df3b0c89ab584262098f8d877e8a72e3614a08Jim Ingham const char* args[] = {file_arg, empty}; 369de4dec874148d30cc1d4c498d38cd048a8164caGreg Clayton SBLaunchInfo launch_info (args); 37a3df3b0c89ab584262098f8d877e8a72e3614a08Jim Ingham 389de4dec874148d30cc1d4c498d38cd048a8164caGreg Clayton return Launch (launch_info); 39a3df3b0c89ab584262098f8d877e8a72e3614a08Jim Ingham } 40a3df3b0c89ab584262098f8d877e8a72e3614a08Jim Ingham 41a3df3b0c89ab584262098f8d877e8a72e3614a08Jim Ingham void 42a3df3b0c89ab584262098f8d877e8a72e3614a08Jim Ingham DoOneStep (int sequence) 43a3df3b0c89ab584262098f8d877e8a72e3614a08Jim Ingham { 449de4dec874148d30cc1d4c498d38cd048a8164caGreg Clayton 459de4dec874148d30cc1d4c498d38cd048a8164caGreg Clayton } 469de4dec874148d30cc1d4c498d38cd048a8164caGreg Clayton 479de4dec874148d30cc1d4c498d38cd048a8164caGreg Clayton 489de4dec874148d30cc1d4c498d38cd048a8164caGreg Clayton void 499de4dec874148d30cc1d4c498d38cd048a8164caGreg Clayton WriteResults (Results &results) 509de4dec874148d30cc1d4c498d38cd048a8164caGreg Clayton { 519de4dec874148d30cc1d4c498d38cd048a8164caGreg Clayton// results.Write(m_out_path.c_str()); 529de4dec874148d30cc1d4c498d38cd048a8164caGreg Clayton } 539de4dec874148d30cc1d4c498d38cd048a8164caGreg Clayton 549de4dec874148d30cc1d4c498d38cd048a8164caGreg Clayton 559de4dec874148d30cc1d4c498d38cd048a8164caGreg Claytonprivate: 569de4dec874148d30cc1d4c498d38cd048a8164caGreg Clayton virtual void 579de4dec874148d30cc1d4c498d38cd048a8164caGreg Clayton TestStep (int counter, ActionWanted &next_action) 589de4dec874148d30cc1d4c498d38cd048a8164caGreg Clayton { 59a3df3b0c89ab584262098f8d877e8a72e3614a08Jim Ingham 60a3df3b0c89ab584262098f8d877e8a72e3614a08Jim Ingham } 61a3df3b0c89ab584262098f8d877e8a72e3614a08Jim Ingham 62a3df3b0c89ab584262098f8d877e8a72e3614a08Jim Ingham TimeMeasurement<std::function<void(StepTest &, int)> > m_do_one_step_over_measurement; 63a3df3b0c89ab584262098f8d877e8a72e3614a08Jim Ingham std::string m_app_path; 64a3df3b0c89ab584262098f8d877e8a72e3614a08Jim Ingham std::string m_out_path; 65a3df3b0c89ab584262098f8d877e8a72e3614a08Jim Ingham 66a3df3b0c89ab584262098f8d877e8a72e3614a08Jim Ingham 67a3df3b0c89ab584262098f8d877e8a72e3614a08Jim Ingham}; 68a3df3b0c89ab584262098f8d877e8a72e3614a08Jim Ingham 69a3df3b0c89ab584262098f8d877e8a72e3614a08Jim Ingham// argv[1] == path to app 70a3df3b0c89ab584262098f8d877e8a72e3614a08Jim Ingham// argv[2] == path to result 71a3df3b0c89ab584262098f8d877e8a72e3614a08Jim Inghamint main(int argc, const char * argv[]) 72a3df3b0c89ab584262098f8d877e8a72e3614a08Jim Ingham{ 73a3df3b0c89ab584262098f8d877e8a72e3614a08Jim Ingham if (argc != 3) 74a3df3b0c89ab584262098f8d877e8a72e3614a08Jim Ingham { 75a3df3b0c89ab584262098f8d877e8a72e3614a08Jim Ingham printf ("Wrong number of arguments, should be \"path to app\", \"path to result.\"\n"); 76a3df3b0c89ab584262098f8d877e8a72e3614a08Jim Ingham return -1; 77a3df3b0c89ab584262098f8d877e8a72e3614a08Jim Ingham } 78a3df3b0c89ab584262098f8d877e8a72e3614a08Jim Ingham 799de4dec874148d30cc1d4c498d38cd048a8164caGreg Clayton StepTest test; 809de4dec874148d30cc1d4c498d38cd048a8164caGreg Clayton TestCase::Run(test,argc,argv); 81a3df3b0c89ab584262098f8d877e8a72e3614a08Jim Ingham return 0; 82a3df3b0c89ab584262098f8d877e8a72e3614a08Jim Ingham} 83