There's lots of detail in my question here
https://stackoverflow.com/questions/67240792/gprof-producing-no-output-for-a-program-that-takes-reasonable-time-to-execute
To summarise:
1. I'm using Mingw64 latest packages from MSYS2
2. Program is compiled and linked with -g -pg
3. Program, when executed, produces gmon.out
4. Parsing gmon.out through gprof gives empty results
I've checked:
1. Program exits normally
2. I've tested two different programs (code below) in an attempt to
ensure there's enough time spent in the functions to generate results.
Both programs take a long time to execute.
3. I've compiled with and without -no-pie
4. I've tried both 32bit and 64bit releases
5. Tried both GCC and G++
In the stack overflow question I've also provided additional info from
VTune (that I don't fully understand).
Everyone else who's compiled and tested the programs gives them a
gmon.out and gprof gives them output. I'm not sure what else I can do to
figure out why I'm unable to profile code. I've asked MSYS2 devs but
they've not responded. Considering MSYS2 is pretty much just packaging
Mingw64 I was hoping someone in this mailing list might be able to help,
or at least point me in the right direction.
Program for Primes:
#include <iostream>
bool is_prime(const int& number)
{
if(number == 0 || number == 1)
return false;
else
{
for(int i = 2; i <= number / 2; ++i)
{
if(number % i == 0)
{
return false;
}
}
}
return true;
}
int main()
{
int low = 0;
int high = 1000000;
while(low < high)
{
if(is_prime(low))
std::cout << low << ", ";
++low;
}
std::cout << std::endl;
return 0;
}
Program for long function calls:
//test_gprof.c
#include<stdio.h>
void new_func1(void)
{
printf("\n Inside new_func1()\n");
int i = 0;
for(;i<0xffffffff;i++);
return;
}
void func1(void)
{
printf("\n Inside func1 \n");
int i = 0;
for(;i<0xffffffff;i++);
new_func1();
return;
}
static void func2(void)
{
printf("\n Inside func2 \n");
int i = 0;
for(;i<0xffffffff;i++);
return;
}
int main(void)
{
printf("\n Inside main()\n");
int i = 0;
for(;i<0xffffff;i++);
func1();
func2();
func1();
func2();
return 0;
}
Any help would be greatly appreciated.
Cheers,
David
_______________________________________________
Mingw-w64-public mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/mingw-w64-public