mirror of
ssh://git.janware.com/srv/git/janware/proj/jw-pkg
synced 2026-01-15 03:53:32 +01:00
profiler.mk: Add profiler.mk
Signed-off-by: Jan Lindemann <jan@janware.com>
This commit is contained in:
parent
f0a01d5749
commit
7faa876a18
1 changed files with 105 additions and 0 deletions
105
make/profiler.mk
Normal file
105
make/profiler.mk
Normal file
|
|
@ -0,0 +1,105 @@
|
|||
all:
|
||||
clean:
|
||||
|
||||
PROF_EXE_PATH ?= $(EXE_PATH)
|
||||
CALLGRIND_OUT ?= callgrind.out
|
||||
OPROF_OUT_DIR ?= oprofile-dir
|
||||
|
||||
ifeq ($(USE_GPROF),true)
|
||||
PROJECT_CPPFLAGS += -pg
|
||||
PROJECT_CFLAGS += -pg
|
||||
PROJECT_LDFLAGS += -pg
|
||||
clean: clean.gprof
|
||||
endif
|
||||
|
||||
ifeq ($(USE_GCOV),true)
|
||||
PROJECT_CPPFLAGS += -fprofile-arcs -ftest-coverage
|
||||
PROJECT_CFLAGS += -fprofile-arcs -ftest-coverage
|
||||
PROJECT_LDFLAGS += -fprofile-arcs -ftest-coverage
|
||||
clean: clean.gcov
|
||||
endif
|
||||
|
||||
# ---- callgrind
|
||||
|
||||
clean: clean.callgrind
|
||||
|
||||
callgrind: run-prereq
|
||||
$(RM) -f core.*
|
||||
valgrind --tool=callgrind $(VALGRIND_OPTS) $(EXE_PATH) $(EXE_ARGS)
|
||||
callgrind-noinst: run-prereq
|
||||
$(RM) -f core.*
|
||||
valgrind --tool=callgrind --callgrind-out-file=$(CALLGRIND_OUT) --instr-atstart=no $(VALGRIND_OPTS) $(EXE_PATH) $(EXE_ARGS)
|
||||
$(CALLGRIND_OUT): callgrind
|
||||
kcachegrind: $(CALLGRIND_OUT)
|
||||
kcachegrind $<
|
||||
callgrind-startinst:
|
||||
ps aux | grep callgrind | grep -v "grep\|make\|callgrind_control" | awk '{print $$2}' | xargs callgrind_control --instr=on
|
||||
callgrind-stopinst:
|
||||
ps aux | grep callgrind | grep -v "grep\|make\|callgrind_control" | awk '{print $$2}' | xargs callgrind_control --instr=off
|
||||
callgrind-dump:
|
||||
ps aux | grep callgrind | grep -v "grep\|make\|callgrind_control" | awk '{print $$2}' | xargs callgrind_control --dump
|
||||
clean.callgrind:
|
||||
rm -f $(CALLGRIND_OUT)
|
||||
|
||||
# ---- oprofile
|
||||
|
||||
clean: clean.oprof
|
||||
|
||||
operf: | $(OPROF_OUT_DIR)
|
||||
|
||||
$(OPROF_OUT_DIR):
|
||||
mkdir -p $@
|
||||
oprof-setup:
|
||||
echo 0 | sudo tee /proc/sys/kernel/kptr_restrict
|
||||
echo 0 | sudo tee /proc/sys/kernel/perf_event_paranoid
|
||||
oprof-callgraph.txt:
|
||||
opreport --session-dir $(OPROF_OUT_DIR) --callgraph > $@.tmp
|
||||
mv $@.tmp $@
|
||||
oprof-view-callgraph-txt: oprof-callgraph.txt
|
||||
less -S $<
|
||||
oprof-callgraph.dot: oprof-callgraph.txt
|
||||
cat $< | gprof2dot -f oprofile > $@.tmp
|
||||
mv $@.tmp $@
|
||||
oprof-callgraph.pdf: oprof-callgraph.dot
|
||||
dot -Tpdf $< -o $@.tmp
|
||||
mv $@.tmp $@
|
||||
oprof-view-callgraph-pdf: oprof-callgraph.pdf
|
||||
okular $<
|
||||
oprof-view-callgraph-dot: oprof-callgraph.dot
|
||||
xdot $<
|
||||
|
||||
#operf: operf.txt
|
||||
#operf.txt:
|
||||
# operf --session-dir $(OPROF_OUT_DIR) $(PROF_CMD)
|
||||
#operf-view-txt: operf.txt
|
||||
# less -S $<
|
||||
#operf-callgraph.pdf: gmon.out
|
||||
# operf $(PROF_EXE_PATH) | operf2dot | dot -Tpdf -o $@.tmp
|
||||
# mv $@.tmp $@
|
||||
#operf-pdf: operf-callgraph.pdf
|
||||
|
||||
clean.oprof:
|
||||
rm -rf $(OPROF_OUT_DIR) oprof-callgraph.txt oprof-callgraph.pdf oprof-callgraph.dot
|
||||
|
||||
# ---- gcov
|
||||
|
||||
clean.gcov:
|
||||
rm -f *.gcda *.gcov
|
||||
|
||||
# ---- gprof
|
||||
|
||||
clean: clean.gprof
|
||||
gprof: gprof.txt
|
||||
gprof.txt:
|
||||
gprof $(PROF_EXE_PATH) > $@.tmp
|
||||
mv $@.tmp $@
|
||||
gprof-view-txt: gprof.txt
|
||||
less -S $<
|
||||
gprof-callgraph.pdf: gmon.out
|
||||
gprof $(PROF_EXE_PATH) | gprof2dot | dot -Tpdf -o $@.tmp
|
||||
mv $@.tmp $@
|
||||
gprof-pdf: gprof-callgraph.pdf
|
||||
gprof-view-callgraph-pdf: gprof-callgraph.pdf
|
||||
okular $<
|
||||
clean.gprof:
|
||||
rm -f gmon.out gprof.txt *.tmp gprof-callgraph.pdf
|
||||
Loading…
Add table
Add a link
Reference in a new issue