@@ -35,17 +35,17 @@ CoverageProbes* vsharp::getProbes() {
3535
3636void vsharp::InitializeProbes () {
3737 auto covProbes = vsharp::getProbes ();
38- covProbes->Coverage = new ProbeCall ((INT_PTR) &Track_Coverage);
39- covProbes->Branch = new ProbeCall ((INT_PTR) &Branch);
40- covProbes->Enter = new ProbeCall ((INT_PTR) &Track_Enter);
41- covProbes->EnterMain = new ProbeCall ((INT_PTR) &Track_EnterMain);
42- covProbes->Leave = new ProbeCall ((INT_PTR) &Track_Leave);
43- covProbes->LeaveMain = new ProbeCall ((INT_PTR) &Track_LeaveMain);
44- covProbes->Finalize_Call = new ProbeCall ((INT_PTR) &Finalize_Call);
45- covProbes->Call = new ProbeCall ((INT_PTR) &Track_Call);
46- covProbes->Tailcall = new ProbeCall ((INT_PTR) &Track_Tailcall);
47- covProbes->Stsfld = new ProbeCall ((INT_PTR) &Track_Stsfld);
48- covProbes->Throw = new ProbeCall ((INT_PTR) &Track_Throw);
38+ covProbes->Coverage = new ProbeCall ((INT_PTR) &Track_Coverage);
39+ covProbes->Branch = new ProbeCall ((INT_PTR) &Branch);
40+ covProbes->Enter = new ProbeCall ((INT_PTR) &Track_Enter);
41+ covProbes->EnterMain = new ProbeCall ((INT_PTR) &Track_EnterMain);
42+ covProbes->Leave = new ProbeCall ((INT_PTR) &Track_Leave);
43+ covProbes->LeaveMain = new ProbeCall ((INT_PTR) &Track_LeaveMain);
44+ covProbes->Finalize_Call = new ProbeCall ((INT_PTR) &Finalize_Call);
45+ covProbes->Call = new ProbeCall ((INT_PTR) &Track_Call);
46+ covProbes->Tailcall = new ProbeCall ((INT_PTR) &Track_Tailcall);
47+ covProbes->Stsfld = new ProbeCall ((INT_PTR) &Track_Stsfld);
48+ covProbes->Throw = new ProbeCall ((INT_PTR) &Track_Throw);
4949 LOG (tout << " probes initialized" << std::endl);
5050}
5151
@@ -84,12 +84,25 @@ void vsharp::Track_Tailcall(OFFSET offset, int methodId) {
8484 profilerState->coverageTracker ->addCoverage (offset, Tailcall, methodId);
8585}
8686
87+ void printMethod (std::string message, int methodId) {
88+ auto tracker = profilerState->coverageTracker ;
89+ LOG (
90+ tracker->collectedMethodsMutex .lock ();
91+ auto method = tracker->collectedMethods [methodId];
92+ auto wl = method.assemblyNameLength ;
93+ auto ws = method.assemblyName ;
94+ tout << message << ' ' << std::string (ws, ws + wl - 1 ) << ' .' << method.methodName << std::endl;
95+ tracker->collectedMethodsMutex .unlock ();
96+ );
97+ }
98+
8799void vsharp::Track_Enter (OFFSET offset, int methodId, int isSpontaneous) {
88100 if (!profilerState->threadTracker ->isCurrentThreadTracked ()) return ;
101+ printMethod (" Entered" , methodId);
89102 if (profilerState->threadTracker ->isPossibleStackOverflow ()) {
90103 LOG (tout << " Possible stack overflow: " << methodId);
91104 }
92- LOG (tout << " Track_Enter: " << methodId);
105+ // LOG(tout << "Track_Enter: " << methodId);
93106 if (!profilerState->coverageTracker ->isCollectMainOnly ())
94107 profilerState->coverageTracker ->addCoverage (offset, Enter, methodId);
95108 profilerState->threadTracker ->stackBalanceUp ();
@@ -100,9 +113,11 @@ void vsharp::Track_EnterMain(OFFSET offset, int methodId, int isSpontaneous) {
100113 // Recursive enter
101114 LOG (tout << " (recursive) Track_EnterMain: " << methodId);
102115 profilerState->threadTracker ->stackBalanceUp ();
116+ profilerState->coverageTracker ->addCoverage (offset, Enter, methodId);
103117 return ;
104118 }
105- LOG (tout << " Track_EnterMain: " << methodId);
119+ printMethod (" Entered Main" , methodId);
120+ // LOG(tout << "Track_EnterMain: " << methodId);
106121 profilerState->threadTracker ->trackCurrentThread ();
107122 profilerState->threadTracker ->stackBalanceUp ();
108123 profilerState->coverageTracker ->addCoverage (offset, EnterMain, methodId);
@@ -118,8 +133,9 @@ void vsharp::Track_Leave(OFFSET offset, int methodId) {
118133
119134void vsharp::Track_LeaveMain (OFFSET offset, int methodId) {
120135 if (!profilerState->threadTracker ->isCurrentThreadTracked ()) return ;
136+ printMethod (" Left Main" , methodId);
121137 profilerState->coverageTracker ->addCoverage (offset, LeaveMain, methodId);
122- LOG (tout << " Track_LeaveMain: " << methodId);
138+ // LOG(tout << "Track_LeaveMain: " << methodId);
123139 if (profilerState->threadTracker ->stackBalanceDown ()) {
124140 // first main frame is not yet reached
125141 return ;
0 commit comments