Menu

#894 Compiling with -pg does not correctly instrument code

v1.0 (example)
open
nobody
None
5
2021-05-01
2021-05-01
David
No

I have an outstanding question on StackOverflow here, and I also have a ticket open on MSYS2 about the same topic (but I believe it should be here instead). I'm linking to these so that people in the future can see that these are connected.

Compiling with Mingw64 10.2 (from MSYS2) with -pg does not appear to correctly instrument the code. When executed, a gmon.out file is produced, but gprof reports that all functions had 0 time, and marks the functions as unused. This is with code specifically designed to take time to execute and produce gprof results.

Compiling with Mingw64-Builds 8.1.0 with -pg works correctly. A gmon.out file produced by a program from 8.1.0 is able to be parsed by gprof from MSYS2 correctly.

//test_gprof.c
    #include<stdio.h>

    void new_func1(void)
    {
        printf("\n Inside new_func1()\n");
        int i = 0;

        for(;i<0xffffffee;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<0xffffffaa;i++);
        return;
    }

    int main(void)
    {
        printf("\n Inside main()\n");
        int i = 0;

        for(;i<0xffffff;i++);
        func1();
        func2();

        return 0;
    }

Compiled with

g++ -g -pg main.cpp -o CPPTESTS-d.exe

Then gprof on the gmon.out file

gprof CPPTests-d.exe gmon.out > gprofoutput.txt

results in empty results.

I have used both GCC and G++, both 32 and 64 bit versions, none work. I've tried compiling and linking in different stages, doesn't work. I've tried compiling with -no-pie as well, doesn't work. I have received feedback in the Mingw64 mailing list that someone else experienced the same issue.

I've tested with a fresh install of Windows 7 on a Virtual Box with the same wrongly instrumented code. For what it's worth, I'm using a Windows 10 machine.

Discussion


Log in to post a comment.