Beware link wall ahead
Stumbling upon this page  ended up in a massive recurssive tree search. A stack of links where kept here.
Profiling with gdb
Why not profiling your application by sampling backtraces using gdb? This intuitive idea is easily adapted to remote debugging as well. 
If the sampling rate is too slow, quickstack can go faster. It is also a good reference for implementing a faster version of a gdb script. 
Bonus: gdb convenience variables and especially this one:
(gdb) break funcA if $_caller_is("funcB")
Wouldn't it be nice to setup a little Raspberry with gdb compiled for your target in order to sample backtraces all the time? (especially for Windows users) 
Profiling with callgrind
Why not using a real profile?
Valgrind Callgrind 
The output can be read with qtcreator, but it does not work as well as kcachegrind. Good news, kcachegrind includes qcachegrind, which is a Qt-only application without dependencies to KDE. The official website looks old and out-dated , but if you look at the git repository  shows that the tool is still updated.
|||Wikibooks, Linux Applications Debugging Techniques, https://en.wikibooks.org/wiki/Linux_Applications_Debugging_Techniques/Print_Version|
|||"poor man's profiler", https://poormansprofiler.org|
|||Valgrind Callgrind, http://valgrind.org/docs/manual/cl-manual.html|
|||Kcachegrind, git repository, https://cgit.kde.org/kcachegrind.git/tree//?|