File: voucher_trace.d

package info (click to toggle)
swiftlang 6.0.3-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 2,519,992 kB
  • sloc: cpp: 9,107,863; ansic: 2,040,022; asm: 1,135,751; python: 296,500; objc: 82,456; f90: 60,502; lisp: 34,951; pascal: 19,946; sh: 18,133; perl: 7,482; ml: 4,937; javascript: 4,117; makefile: 3,840; awk: 3,535; xml: 914; fortran: 619; cs: 573; ruby: 573
file content (78 lines) | stat: -rwxr-xr-x 1,961 bytes parent folder | download
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
#!/usr/sbin/dtrace -s

/*
 * Copyright (c) 2017 Apple Inc. All rights reserved.
 *
 * @APPLE_APACHE_LICENSE_HEADER_START@
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 *
 * @APPLE_APACHE_LICENSE_HEADER_END@
 */

/*
 * Usage: voucher_trace.d -p [pid]
 *        traced process must have been executed with
 *        DYLD_LIBRARY_PATH=/usr/lib/system/introspection or with
 *        DYLD_IMAGE_SUFFIX=_profile or DYLD_IMAGE_SUFFIX=_debug
 */

#pragma D option quiet
#pragma D option zdefs
#pragma D option bufsize=16m

BEGIN {
	printf("Starting to trace voucher operations...\n");
}

voucher$target:libdispatch*.dylib::create
{
	printf("ALLOC   voucher 0x%p, thread %#llx, ref 1, port %#x, aid %#llx", arg0, tid, arg1, arg2);
	ustack(10);
	printf("\n")
}

voucher$target:libdispatch*.dylib::dispose
{
	printf("FREE    voucher 0x%p, thread %#llx, ref 0", arg0, tid);
	ustack(10);
	printf("\n")
}

voucher$target:libdispatch*.dylib::retain
{
	printf("RETAIN  voucher 0x%p, thread %#llx, ref %d", arg0, tid, arg1);
	ustack(10);
	printf("\n")
}

voucher$target:libdispatch*.dylib::release
{
	printf("RELEASE voucher 0x%p, thread %#llx, ref %d", arg0, tid, arg1);
	ustack(10);
	printf("\n")
}

voucher$target:libdispatch*.dylib::adopt
{
	printf("ADOPT   voucher 0x%p, thread %#llx", arg0, tid);
	ustack(10);
	printf("\n")
}

voucher$target:libdispatch*.dylib::orphan
{
	printf("ORPHAN  voucher 0x%p, thread %#llx", arg0, tid);
	ustack(10);
	printf("\n")
}