OpenOCD kills itself instead of exiting normally. This prevents coverage
from working, and profiling might have the same problem. Here's what I did
for coverage:

- Runtime coverage testing

  Apply the following patch to prevent OpenOCD from killing itself:
  @code
--- a/src/openocd.c
+++ b/src/openocd.c
@@ -372,8 +372,6 @@ int openocd_main(int argc, char *argv[])

        if (ERROR_FAIL == ret)
                return EXIT_FAILURE;
-       else if (ERROR_OK != ret)
-               exit_on_signal(ret);

        return ret;
 }
  @endcode

  Configure your OpenOCD binary with coverage support as follows:
  @code
  LDFLAGS="-fprofile-arcs -ftest-coverage"
           CFLAGS="-fprofile-arcs -ftest-coverage" ./configure
  @endcode

  Now every time OpenOCD is run, coverage info in your build directory is
  updated. Running `gcov src/path/file.c` will generate a report.

Tim

On Tue, May 18, 2021 at 7:53 AM Ooi, Cinly <cinly....@intel.com> wrote:

> Hi
>
>
>
> Does anyone has experience profiling OpenOCD and can share the experience,
> i.e. tools etc?
>
>
>
> The reason for asking is the driver that I am developing, aji_client (
> https://github.com/intel/aji_openocd) is slow under some circumstances.
> Good news is those circumstances are consistently reproducible.  I want to
> use profiling tool to identify the bottleneck and where I have to make
> improvement to my driver. The conventional wisdom is to run a profiling
> tool over the workload to get a picture of which functions take the longest
> time, the bottleneck etc instead of stabbing in the dark for solution. I
> tried gprof (1) and sprof (2) and are having issues with them. See notes.
>
>
>
> Many thanks in advance and best regards
>
> Cinly
>
>
>
> Note:
>
>    1. gprof might be the wrong tool to use as my driver calls shared
>    library libaji_client.so (https://github.com/intel/libaji_client),
>    which for this task I need to profile as well. Chatter on the internet says
>    gprof cannot handle shared library
>    2. sprof is giving me problems. I did not manage to get it to work for
>    anything more complex than a simple toy program.
>
>


Reply via email to