chore: Add valgrind debugging

main
Sean McBride 4 years ago
parent b510214e37
commit a11258af11

@ -68,6 +68,7 @@ RUN apt-get update && apt-get install -y --no-install-recommends \
less \ less \
openssh-client \ openssh-client \
strace \ strace \
valgrind \
vim \ vim \
wabt wabt

@ -24,6 +24,7 @@ __framework_sh__usage() {
echo " -t,--target=<target url> Execute as client against remote URL" echo " -t,--target=<target url> Execute as client against remote URL"
echo " -s,--serve Serve but do not run client" echo " -s,--serve Serve but do not run client"
echo " -d,--debug Debug under GDB but do not run client" echo " -d,--debug Debug under GDB but do not run client"
echo " -v,--valgrind Debug under Valgrind but do not run client"
echo " -p,--perf Run under perf. Limited to running on a baremetal Linux host!" echo " -p,--perf Run under perf. Limited to running on a baremetal Linux host!"
echo " -h,--help Display usage information" echo " -h,--help Display usage information"
} }
@ -80,7 +81,7 @@ __framework_sh__parse_arguments() {
shift shift
;; ;;
-p | --perf) -p | --perf)
if [[ "$__framework_sh__role" == "perf" ]]; then if [[ "$__framework_sh__role" == "client" ]]; then
echo "Cannot use -p,--perf with -t,--target" echo "Cannot use -p,--perf with -t,--target"
__framework_sh__usage __framework_sh__usage
return 1 return 1
@ -88,6 +89,15 @@ __framework_sh__parse_arguments() {
__framework_sh__role=perf __framework_sh__role=perf
shift shift
;; ;;
-v | --valgrind)
if [[ "$__framework_sh__role" == "client" ]]; then
echo "Cannot use -v,--valgrind with -t,--target"
__framework_sh__usage
return 1
fi
__framework_sh__role=valgrind
shift
;;
-h | --help) -h | --help)
__framework_sh__usage __framework_sh__usage
exit 0 exit 0
@ -229,6 +239,21 @@ __framework_sh__run_perf() {
perf record -g -s sledgert "$__framework_sh__application_directory/spec.json" perf record -g -s sledgert "$__framework_sh__application_directory/spec.json"
} }
__framework_sh__run_valgrind() {
if (($# != 0)); then
printf "[ERR]\n"
panic "Invalid number of arguments. Saw $#. Expected 0."
return 1
fi
if ! command -v valgrind; then
echo "valgrind is not present."
exit 1
fi
valgrind --leak-check=full sledgert "$__framework_sh__application_directory/spec.json"
}
# Starts the Sledge Runtime under GDB # Starts the Sledge Runtime under GDB
__framework_sh__run_debug() { __framework_sh__run_debug() {
if (($# != 0)); then if (($# != 0)); then
@ -314,7 +339,7 @@ __framework_sh__create_and_export_results_directory() {
"both") "both")
dir="$__framework_sh__application_directory/res/$__framework_sh__timestamp/$subdirectory" dir="$__framework_sh__application_directory/res/$__framework_sh__timestamp/$subdirectory"
;; ;;
"client" | "server" | "debug" | "perf") "client" | "server" | "debug" | "perf" | "valgrind")
dir="$__framework_sh__application_directory/res/$__framework_sh__timestamp" dir="$__framework_sh__application_directory/res/$__framework_sh__timestamp"
;; ;;
*) *)
@ -359,6 +384,9 @@ main() {
perf) perf)
__framework_sh__run_perf __framework_sh__run_perf
;; ;;
valgrind)
__framework_sh__run_valgrind
;;
client) client)
__framework_sh__run_client __framework_sh__run_client
;; ;;

Loading…
Cancel
Save