1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
|
#compdef valgrind -value-,VALGRIND_OPTS,-default-
local curcontext="$curcontext" state line common cmd
local -a args args_{memcheck,addrcheck,cachegrind,helgrind,massif}
cmd=(
'1:command name:_command_names -e'
'*::args :_normal'
)
if [[ $service = *_OPTS* ]]; then
compset -q
words=( fake "$words[@]" )
(( CURRENT++ ))
cmd=()
fi
common=(
'--sloppy-malloc=-[round malloc sizes to multiple of 4]:enable:(yes no)'
'--alignment=-[set minimum alignment of allocations]:number'
)
args_addrcheck=(
$common
'--partial-loads-ok=-:enable:(yes no)'
'--freelist-vol=-[volume of freed blocks queue]:blocks'
'--leak-check=-[search for memory leaks at exit]:enable:(yes no)'
'--leak-resolution=-[how much bt merging in leak check]:(low med high)'
'--show-reachable=-[show reachable blocks in leak check]:enable:(yes no)'
'--workaround-gcc296-bugs=-:enable:(yes no)'
)
args_memcheck=(
$args_addrcheck
'--avoid-strlen-errors=-[suppress errs from inlined strlen]:enable:(yes no)'
)
args_cachegrind=(
'--I1=-[set I1 cache manually]:size,assoc,line_size'
'--D1=-[set D1 cache manually]:size,assoc,line_size'
'--L2=-[set L2 cache manually]:size,assoc,line_size'
)
args_helgrind=(
$common
'--private-stacks=-[assume thread stacks are used privately]:enable:(yes no)'
'--show-last-access=-[show location of last word access on error]:locations:(no some all)'
)
args_massif=(
$common
'--heap=-[profile heap blocks]:enable:(yes no)'
'--heap-admin=-[specify average admin bytes per heap block]:bytes'
'--stacks=-[enable profile stacks]:enable:(yes no)'
'--depth=-[depth of contexts]:depth'
'--alloc-fn=-[specify alloc function]:function'
'--format=-[specify format of textual output]:format:(text html)'
)
args="args_${${words[(r)--(skin|tool)=*]#*=}:-memcheck}"
_arguments -C ${(P)args} $cmd \
'(--tool --skin)'{--tool,--skin}'=-[specify valgrind tool]:valgrind tool:->tools' \
'(-h --help)'{-h,--help}'[show help information]' \
'--help-debug[show help info including debugging options]' \
'--version[show version]' \
'(-q --quiet)'{-q,--quiet}'[run silently; only print error msgs]' \
'(-v --verbose)'{-v,--verbose}'[be more verbose]' \
'--trace-children=-[valgrind-ise child processes]:enable:(yes no)' \
'--track-fds=-[track open file descriptors]:enable:(yes no)' \
'--time-stamp=-[add timestamps to log messages]:enable:(yes no)' \
'--run-libc-freeres=-[free up glibc memory at exit]:enable:(yes no)' \
'--weird-hacks=-[enable hack]:hack:(lax-ioctls)' \
'--signal-polltime=-[signal poll period (ms)]:period' \
'--lowlat-signals=-[improve thread signal wake-up latency]:enable:(yes no)' \
'--lowlat-syscalls=-[improve thread syscall wake-up latency]:enable:(yes no)' \
'--pointercheck=-[enforce client address space limits]:enable:(yes no)' \
'--log-fd=-[log messages to specified file descriptor]:file descriptor:_file_descriptors' \
'--log-file=-[log messages to specified file]:file:_files' \
'--log-socket=-[log messages to socket]:ipaddr\:port' \
'--demangle=-[automatically demangle C++ names]:enable:(yes no)' \
'--num-callers=-[specify no of callers to show in stack traces]:number' \
'--error-limit=-[stop showing new errors if too many]:enable:(yes no)' \
'--show-below-main=-[continue stack traces below main()]:enable:(yes no)' \
'--suppressions=-[suppress errors described in specified file]:file:_files' \
'--gen-suppressions=-[print suppressions for errors detected]:enable:(yes no)' \
'--db-attach=-[start debugger when errors detected]:enable:(yes no)' \
'--db-command=-[specify command to start debugger]:command:_command_names -e' \
'--input-fd=-[specify file descriptor for input]:file descriptor:_file_descriptors' && return
if [[ -n "$state" ]]; then
_wanted tools exl 'valgrind tool' compadd ${=${${(f)"$(_call_program \
tools valgrind --tool= 2>&1)"}[(r)Available*,-1]}[2,-1]} && return
fi
return 1
|