completed lab 6
This commit is contained in:
parent
e589a83c98
commit
dd998eff82
10 changed files with 244 additions and 608 deletions
1
.gitignore
vendored
1
.gitignore
vendored
|
@ -1,2 +1,3 @@
|
|||
java-home-path.txt
|
||||
/out/
|
||||
/agent/agent.jar
|
||||
|
|
64
README.md
64
README.md
|
@ -1,16 +1,39 @@
|
|||
## Environment
|
||||
# Lab 6 - Software Performance 2023
|
||||
|
||||
This is Lab 6 of the **Software Performance** course at USI.
|
||||
|
||||
## Submission Info
|
||||
|
||||
| Property | Value |
|
||||
|------------|----------|
|
||||
| First Name | Claudio |
|
||||
| Last Name | Maggioni |
|
||||
|
||||
## Setup
|
||||
|
||||
To run this application, Java 1.8 is required. The following commands assume that the file `java-home-path.txt` contains
|
||||
an absolute path pointing to a valid `JAVA_HOME` for Java 1.8. To automatically do this on macOS run:
|
||||
|
||||
```shell
|
||||
export JAVA_HOME=`/usr/libexec/java_home -v 1.8.0_345`
|
||||
export PATH="${JAVA_HOME}/bin:$PATH"
|
||||
/usr/libexec/java_home -V
|
||||
```
|
||||
|
||||
## Agent
|
||||
|
||||
### Compile the agent as JAR
|
||||
to list all installed JVMs. Then run this command to populate `java-home-path.txt`:
|
||||
|
||||
```shell
|
||||
export JAVA_HOME=`/usr/libexec/java_home -v 1.8.0_345`
|
||||
/usr/libexec/java_home -v $VERSION > java-home-path.txt
|
||||
```
|
||||
|
||||
Here `$VERSION` is the JVM version number for the Java 1.8 JVM chosen from the previous list.
|
||||
|
||||
The following sections explain how to compile each module of this project. The shell blocks may be executed with
|
||||
IntelliJ IDEA's _RunMarkdown_ feature by opening this file and clicking on the green run button to the side of each
|
||||
shell block.
|
||||
|
||||
## How to compile the agent as JAR
|
||||
|
||||
```shell
|
||||
export JAVA_HOME=`cat java-home-path.txt`
|
||||
export PATH="${JAVA_HOME}/bin:$PATH"
|
||||
cd agent/src
|
||||
find . -name '*.java' -print -exec javac -cp ../lib/\*:. -d ../../out/production/agent \{\} \;
|
||||
|
@ -19,34 +42,37 @@ jar cfm agent.jar manifest.txt -C ../out/production/agent .
|
|||
jar tf agent.jar
|
||||
```
|
||||
|
||||
## Profiler
|
||||
|
||||
### Compile the profiler
|
||||
## How to compile the profiler classes
|
||||
|
||||
```shell
|
||||
export JAVA_HOME=`/usr/libexec/java_home -v 1.8.0_345`
|
||||
export JAVA_HOME=`cat java-home-path.txt`
|
||||
export PATH="${JAVA_HOME}/bin:$PATH"
|
||||
cd profiler/src
|
||||
find . -name '*.java' -print -exec javac -d ../../out/production/profiler \{\} \;
|
||||
cd ../..
|
||||
```
|
||||
|
||||
## Application
|
||||
|
||||
### Compile the application
|
||||
## How to compile the application classes
|
||||
|
||||
```shell
|
||||
export JAVA_HOME=`/usr/libexec/java_home -v 1.8.0_345`
|
||||
export JAVA_HOME=`cat java-home-path.txt`
|
||||
export PATH="${JAVA_HOME}/bin:$PATH"
|
||||
cd application/src
|
||||
find . -name '*.java' -print -exec javac -d ../../out/production/application \{\} \;
|
||||
cd ../..
|
||||
```
|
||||
|
||||
### Run application with agent
|
||||
### Running
|
||||
|
||||
To run the application compile the agent, the profiler and the application and then execute:
|
||||
|
||||
```shell
|
||||
export JAVA_HOME=`/usr/libexec/java_home -v 1.8.0_345`
|
||||
export JAVA_HOME=`cat java-home-path.txt`
|
||||
export PATH="${JAVA_HOME}/bin:$PATH"
|
||||
java -javaagent:agent/agent.jar=hello -cp out/production/application -Xbootclasspath/p:out/production/profiler ch.usi.inf.sp.dbi.Application
|
||||
```
|
||||
java -javaagent:agent/agent.jar=hello \
|
||||
-cp out/production/application \
|
||||
-Xbootclasspath/p:out/production/profiler \
|
||||
ch.usi.inf.sp.dbi.Application
|
||||
```
|
||||
|
||||
The output of this command will include the program output and the calling context tree for the application execution.
|
|
@ -6,11 +6,21 @@ import org.objectweb.asm.Opcodes;
|
|||
import org.objectweb.asm.tree.*;
|
||||
|
||||
import java.lang.instrument.ClassFileTransformer;
|
||||
import java.lang.instrument.IllegalClassFormatException;
|
||||
import java.security.ProtectionDomain;
|
||||
import java.util.Set;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
public class ClassTransformer implements ClassFileTransformer {
|
||||
|
||||
private static final List<String> classBlacklist = Arrays.asList(
|
||||
"java/",
|
||||
"javax/",
|
||||
"sun/",
|
||||
"com/sun/",
|
||||
"jdk/",
|
||||
"ch/usi/inf/sp/dbi/profiler/"
|
||||
);
|
||||
|
||||
public static byte[] instrument(final byte[] bytecode) {
|
||||
final ClassReader cr = new ClassReader(bytecode);
|
||||
final ClassNode cn = new ClassNode();
|
||||
|
@ -28,7 +38,6 @@ public class ClassTransformer implements ClassFileTransformer {
|
|||
instrumentEntry(cn, mn);
|
||||
instrumentExit(cn, mn);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private static void instrumentEntry(ClassNode cn, MethodNode mn) {
|
||||
|
@ -67,26 +76,22 @@ public class ClassTransformer implements ClassFileTransformer {
|
|||
String className,
|
||||
Class<?> classBeingRedefined,
|
||||
ProtectionDomain protectionDomain,
|
||||
byte[] classfileBuffer) throws IllegalClassFormatException {
|
||||
// className.startsWith("java/") ||
|
||||
// className.startsWith("javax/") ||
|
||||
// className.startsWith("sun/") ||
|
||||
// className.startsWith("com/sun/") ||
|
||||
// className.startsWith("jdk/") ||
|
||||
byte[] classfileBuffer) {
|
||||
|
||||
if (!className.startsWith("ch/usi/inf/sp/dbi/") ||
|
||||
className.startsWith("ch/usi/inf/sp/dbi/agent/") ||
|
||||
className.startsWith("ch/usi/inf/sp/dbi/profiler/")) {
|
||||
System.out.println("Skipping class <" + loader + ", " + className + ">");
|
||||
if (classBlacklist.stream().anyMatch(className::startsWith)) {
|
||||
System.out.printf("Skipping class <%s, %s> (in blacklist)%n", loader, className);
|
||||
return classfileBuffer;
|
||||
}
|
||||
|
||||
System.out.println("About to transform class <" + loader + ", " + className + ">");
|
||||
System.out.printf("About to transform class <%s, %s>%n", loader, className);
|
||||
|
||||
try {
|
||||
return instrument(classfileBuffer);
|
||||
} catch (Throwable e) {
|
||||
System.out.printf("Error instrumenting class <%s>: %s%n", className, e.getMessage());
|
||||
e.printStackTrace(System.err);
|
||||
return classfileBuffer;
|
||||
|
||||
return classfileBuffer; // return non-instrumented class
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -2,17 +2,43 @@ package ch.usi.inf.sp.dbi;
|
|||
|
||||
public class Application {
|
||||
public static void main(String... args) {
|
||||
fib(20);
|
||||
fib(5);
|
||||
final Parent[] children = new Parent[] {new Child(), new Child2()};
|
||||
}
|
||||
|
||||
public static int fib(int n) {
|
||||
System.out.println("fib(" + n + ")");
|
||||
if (n == 0 || n == 1) {
|
||||
return n;
|
||||
if (n == 0) {
|
||||
return return0();
|
||||
} else if (n == 1) {
|
||||
return return1();
|
||||
} else {
|
||||
int i = fib(n-1) + fib(n-2);
|
||||
System.out.println("fib(" + n + ") = " + i);
|
||||
return i;
|
||||
return fib(n - 1) + fib(n - 2);
|
||||
}
|
||||
}
|
||||
|
||||
private static int return1() {
|
||||
return 1;
|
||||
}
|
||||
|
||||
private static int return0() {
|
||||
return 0;
|
||||
}
|
||||
|
||||
static class Parent {
|
||||
static {
|
||||
fib(1);
|
||||
}
|
||||
}
|
||||
|
||||
static class Child extends Parent {
|
||||
static {
|
||||
fib(3);
|
||||
}
|
||||
}
|
||||
|
||||
static class Child2 extends Parent {
|
||||
static {
|
||||
fib(2);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,490 +0,0 @@
|
|||
#
|
||||
# A fatal error has been detected by the Java Runtime Environment:
|
||||
#
|
||||
# Internal Error (exceptions.cpp:471), pid=5684, tid=0x0000000000001703
|
||||
# fatal error: ExceptionMark destructor expects no pending exceptions
|
||||
#
|
||||
# JRE version: OpenJDK Runtime Environment (8.0_345-b01) (build 1.8.0_345-b01)
|
||||
# Java VM: OpenJDK 64-Bit Server VM (25.345-b01 mixed mode bsd-amd64 compressed oops)
|
||||
# Failed to write core dump. Core dumps have been disabled. To enable core dumping, try "ulimit -c unlimited" before starting Java again
|
||||
#
|
||||
# If you would like to submit a bug report, please visit:
|
||||
# https://github.com/adoptium/adoptium-support/issues
|
||||
#
|
||||
|
||||
--------------- T H R E A D ---------------
|
||||
|
||||
Current thread (0x00007f77bc80a800): JavaThread "main" [_thread_in_vm, id=5891, stack(0x0000700002fed000,0x00007000030ed000)]
|
||||
|
||||
Stack: [0x0000700002fed000,0x00007000030ed000], sp=0x00007000030ecc50, free space=1023k
|
||||
Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
|
||||
V [libjvm.dylib+0x59ba9e] VMError::report_and_die()+0x440
|
||||
V [libjvm.dylib+0x1d2b84] report_vm_error(char const*, int, char const*, char const*)+0x55
|
||||
V [libjvm.dylib+0x22c3e9] ExceptionMark::~ExceptionMark()+0x71
|
||||
V [libjvm.dylib+0x562cd4] Threads::create_vm(JavaVMInitArgs*, bool*)+0xe2e
|
||||
V [libjvm.dylib+0x313f1d] JNI_CreateJavaVM+0x5d
|
||||
C [java+0x24be] JavaMain+0x10b
|
||||
C [libsystem_pthread.dylib+0x6202] _pthread_start+0x63
|
||||
C [libsystem_pthread.dylib+0x1bab] thread_start+0xf
|
||||
C 0x0000000000000000
|
||||
|
||||
|
||||
--------------- P R O C E S S ---------------
|
||||
|
||||
Java Threads: ( => current thread )
|
||||
0x00007f77ba811000 JavaThread "C1 CompilerThread3" daemon [_thread_blocked, id=22019, stack(0x0000700004329000,0x0000700004429000)]
|
||||
0x00007f77bc851000 JavaThread "C2 CompilerThread2" daemon [_thread_blocked, id=21763, stack(0x0000700004226000,0x0000700004326000)]
|
||||
0x00007f77bc80e800 JavaThread "C2 CompilerThread1" daemon [_thread_blocked, id=19203, stack(0x0000700004123000,0x0000700004223000)]
|
||||
0x00007f77bc013000 JavaThread "C2 CompilerThread0" daemon [_thread_blocked, id=19715, stack(0x0000700004020000,0x0000700004120000)]
|
||||
0x00007f77bc00c000 JavaThread "Signal Dispatcher" daemon [_thread_blocked, id=18435, stack(0x0000700003f1d000,0x000070000401d000)]
|
||||
0x00007f77bb82e800 JavaThread "Finalizer" daemon [_thread_blocked, id=16643, stack(0x0000700003d14000,0x0000700003e14000)]
|
||||
0x00007f77bb82b800 JavaThread "Reference Handler" daemon [_thread_blocked, id=13315, stack(0x0000700003c11000,0x0000700003d11000)]
|
||||
=>0x00007f77bc80a800 JavaThread "main" [_thread_in_vm, id=5891, stack(0x0000700002fed000,0x00007000030ed000)]
|
||||
|
||||
Other Threads:
|
||||
0x00007f77bb827000 VMThread [stack: 0x0000700003b0e000,0x0000700003c0e000] [id=13571]
|
||||
|
||||
VM state:not at safepoint (normal execution)
|
||||
|
||||
VM Mutex/Monitor currently owned by a thread: None
|
||||
|
||||
heap address: 0x00000006c0000000, size: 4096 MB, Compressed Oops mode: Zero based, Oop shift amount: 3
|
||||
Narrow klass base: 0x0000000000000000, Narrow klass shift: 3
|
||||
Compressed class space size: 1073741824 Address: 0x00000007c0000000
|
||||
|
||||
Heap:
|
||||
PSYoungGen total 76288K, used 6610K [0x000000076ab00000, 0x0000000770000000, 0x00000007c0000000)
|
||||
eden space 65536K, 10% used [0x000000076ab00000,0x000000076b174b90,0x000000076eb00000)
|
||||
from space 10752K, 0% used [0x000000076f580000,0x000000076f580000,0x0000000770000000)
|
||||
to space 10752K, 0% used [0x000000076eb00000,0x000000076eb00000,0x000000076f580000)
|
||||
ParOldGen total 175104K, used 0K [0x00000006c0000000, 0x00000006cab00000, 0x000000076ab00000)
|
||||
object space 175104K, 0% used [0x00000006c0000000,0x00000006c0000000,0x00000006cab00000)
|
||||
Metaspace used 3336K, capacity 4920K, committed 5120K, reserved 1056768K
|
||||
class space used 343K, capacity 424K, committed 512K, reserved 1048576K
|
||||
|
||||
Card table byte_map: [0x0000000104301000,0x0000000104b02000] byte_map_base: 0x0000000100d01000
|
||||
|
||||
Marking Bits: (ParMarkBitMap*) 0x000000010544cf08
|
||||
Begin Bits: [0x00000001150bd000, 0x00000001190bd000)
|
||||
End Bits: [0x00000001190bd000, 0x000000011d0bd000)
|
||||
|
||||
Polling page: 0x0000000103a00000
|
||||
|
||||
CodeCache: size=245760Kb used=1258Kb max_used=1258Kb free=244501Kb
|
||||
bounds [0x0000000105b67000, 0x0000000105dd7000, 0x0000000114b67000]
|
||||
total_blobs=364 nmethods=94 adapters=186
|
||||
compilation: enabled
|
||||
|
||||
Compilation events (10 events):
|
||||
Event: 0.135 Thread 0x00007f77ba811000 nmethod 92 0x0000000105c97690 code [0x0000000105c97860, 0x0000000105c98308]
|
||||
Event: 0.135 Thread 0x00007f77ba811000 94 3 org.objectweb.asm.SymbolTable::addType (81 bytes)
|
||||
Event: 0.136 Thread 0x00007f77ba811000 nmethod 94 0x0000000105c9a6d0 code [0x0000000105c9a8a0, 0x0000000105c9afb8]
|
||||
Event: 0.136 Thread 0x00007f77ba811000 85 3 org.objectweb.asm.MethodWriter::addSuccessorToCurrentBasicBlock (24 bytes)
|
||||
Event: 0.136 Thread 0x00007f77ba811000 nmethod 85 0x0000000105c9b310 code [0x0000000105c9b480, 0x0000000105c9b750]
|
||||
Event: 0.136 Thread 0x00007f77ba811000 55 1 org.objectweb.asm.SymbolTable::getMajorVersion (5 bytes)
|
||||
Event: 0.136 Thread 0x00007f77ba811000 nmethod 55 0x0000000105c973d0 code [0x0000000105c97520, 0x0000000105c97630]
|
||||
Event: 0.136 Thread 0x00007f77ba811000 90 3 org.objectweb.asm.Frame::pop (42 bytes)
|
||||
Event: 0.136 Thread 0x00007f77ba811000 nmethod 90 0x0000000105c9b890 code [0x0000000105c9ba00, 0x0000000105c9bbf0]
|
||||
Event: 0.136 Thread 0x00007f77ba811000 89 3 org.objectweb.asm.Frame::getAbstractTypeFromDescriptor (415 bytes)
|
||||
|
||||
GC Heap History (0 events):
|
||||
No events
|
||||
|
||||
Deoptimization events (1 events):
|
||||
Event: 0.135 Thread 0x00007f77bc80a800 Uncommon trap: reason=unstable_if action=reinterpret pc=0x0000000105c9358c method=org.objectweb.asm.Frame.merge(Lorg/objectweb/asm/SymbolTable;I[II)Z @ 55
|
||||
|
||||
Classes redefined (0 events):
|
||||
No events
|
||||
|
||||
Internal exceptions (5 events):
|
||||
Event: 0.026 Thread 0x00007f77bc80a800 Exception <a 'java/lang/NoSuchMethodError': Method sun.misc.Unsafe.defineClass(Ljava/lang/String;[BII)Ljava/lang/Class; name or signature does not match> (0x000000076ab07cc0) thrown at [/Users/jenkins/workspace/build-scripts/jobs/jdk8u/jdk8u-mac-x64-temur
|
||||
Event: 0.026 Thread 0x00007f77bc80a800 Exception <a 'java/lang/NoSuchMethodError': Method sun.misc.Unsafe.prefetchRead(Ljava/lang/Object;J)V name or signature does not match> (0x000000076ab07fa8) thrown at [/Users/jenkins/workspace/build-scripts/jobs/jdk8u/jdk8u-mac-x64-temurin/workspace/build
|
||||
Event: 0.136 Thread 0x00007f77bc80a800 Exception <a 'java/lang/NoClassDefFoundError': ch/usi/inf/sp/dbi/profiler/Profiler> (0x000000076b02d3c8) thrown at [/Users/jenkins/workspace/build-scripts/jobs/jdk8u/jdk8u-mac-x64-temurin/workspace/build/src/hotspot/src/share/vm/classfile/systemDictionary
|
||||
Event: 0.136 Thread 0x00007f77bc80a800 Exception <a 'java/lang/NoClassDefFoundError'> (0x000000076b02d3c8) thrown at [/Users/jenkins/workspace/build-scripts/jobs/jdk8u/jdk8u-mac-x64-temurin/workspace/build/src/hotspot/src/share/vm/oops/instanceKlass.cpp, line 964]
|
||||
Event: 0.136 Thread 0x00007f77bc80a800 Exception <a 'java/lang/NoClassDefFoundError'> (0x000000076b02d3c8) thrown at [/Users/jenkins/workspace/build-scripts/jobs/jdk8u/jdk8u-mac-x64-temurin/workspace/build/src/hotspot/src/share/vm/oops/instanceKlass.cpp, line 964]
|
||||
|
||||
Events (10 events):
|
||||
Event: 0.118 Thread 0x00007f77ba811000 Thread added: 0x00007f77ba811000
|
||||
Event: 0.118 loading class java/lang/invoke/MethodHandleImpl
|
||||
Event: 0.119 loading class org/objectweb/asm/tree/TryCatchBlockNode
|
||||
Event: 0.119 loading class org/objectweb/asm/tree/TryCatchBlockNode done
|
||||
Event: 0.135 Thread 0x00007f77bc80a800 Uncommon trap: trap_request=0xffffff65 fr.pc=0x0000000105c9358c
|
||||
Event: 0.135 Thread 0x00007f77bc80a800 DEOPT PACKING pc=0x0000000105c9358c sp=0x00007000030eaa30
|
||||
Event: 0.135 Thread 0x00007f77bc80a800 DEOPT UNPACKING pc=0x0000000105bac47a sp=0x00007000030ea9c0 mode 2
|
||||
Event: 0.136 loading class java/lang/invoke/MethodHandleImpl done
|
||||
Event: 0.136 loading class ch/usi/inf/sp/dbi/profiler/Profiler
|
||||
Event: 0.136 loading class ch/usi/inf/sp/dbi/profiler/Profiler done
|
||||
|
||||
|
||||
Dynamic libraries:
|
||||
0x00007ff81ea17000 /System/Library/Frameworks/Cocoa.framework/Versions/A/Cocoa
|
||||
0x00007ff8076b7000 /System/Library/Frameworks/AppKit.framework/Versions/C/AppKit
|
||||
0x00007ff80a914000 /System/Library/Frameworks/CoreData.framework/Versions/A/CoreData
|
||||
0x00007ff805023000 /System/Library/Frameworks/Foundation.framework/Versions/C/Foundation
|
||||
0x00007ff810e78000 /usr/lib/libSystem.B.dylib
|
||||
0x00007ff808abd000 /System/Library/PrivateFrameworks/UIFoundation.framework/Versions/A/UIFoundation
|
||||
0x00007ffb0edf5000 /System/Library/PrivateFrameworks/CollectionViewCore.framework/Versions/A/CollectionViewCore
|
||||
0x00007ff818350000 /System/Library/PrivateFrameworks/RemoteViewServices.framework/Versions/A/RemoteViewServices
|
||||
0x00007ff80ec07000 /System/Library/PrivateFrameworks/XCTTargetBootstrap.framework/Versions/A/XCTTargetBootstrap
|
||||
0x00007ff81380c000 /System/Library/PrivateFrameworks/InternationalSupport.framework/Versions/A/InternationalSupport
|
||||
0x00007ff813895000 /System/Library/PrivateFrameworks/UserActivity.framework/Versions/A/UserActivity
|
||||
0x00007ffc10131000 /System/Library/PrivateFrameworks/WindowManagement.framework/Versions/A/WindowManagement
|
||||
0x00007ff804cdc000 /System/Library/Frameworks/SystemConfiguration.framework/Versions/A/SystemConfiguration
|
||||
0x00007ff812bc3000 /usr/lib/libspindump.dylib
|
||||
0x00007ff808c99000 /System/Library/Frameworks/UniformTypeIdentifiers.framework/Versions/A/UniformTypeIdentifiers
|
||||
0x00007ff80cc4d000 /usr/lib/libapp_launch_measurement.dylib
|
||||
0x00007ff80bdc5000 /System/Library/PrivateFrameworks/CoreAnalytics.framework/Versions/A/CoreAnalytics
|
||||
0x00007ff80cc50000 /System/Library/PrivateFrameworks/CoreAutoLayout.framework/Versions/A/CoreAutoLayout
|
||||
0x00007ff80e47c000 /System/Library/Frameworks/Metal.framework/Versions/A/Metal
|
||||
0x00007ff80f3ce000 /usr/lib/liblangid.dylib
|
||||
0x00007ff80ec0c000 /System/Library/PrivateFrameworks/CoreSVG.framework/Versions/A/CoreSVG
|
||||
0x00007ff80964f000 /System/Library/PrivateFrameworks/SkyLight.framework/Versions/A/SkyLight
|
||||
0x00007ff809aa3000 /System/Library/Frameworks/CoreGraphics.framework/Versions/A/CoreGraphics
|
||||
0x00007ff818aa5000 /System/Library/Frameworks/Accelerate.framework/Versions/A/Accelerate
|
||||
0x00007ff812a27000 /System/Library/PrivateFrameworks/IconServices.framework/Versions/A/IconServices
|
||||
0x00007ff80e45d000 /System/Library/Frameworks/IOSurface.framework/Versions/A/IOSurface
|
||||
0x00007ff80bdf1000 /usr/lib/libDiagnosticMessagesClient.dylib
|
||||
0x00007ff810d8d000 /usr/lib/libz.1.dylib
|
||||
0x00007ff81c41f000 /System/Library/Frameworks/ApplicationServices.framework/Versions/A/ApplicationServices
|
||||
0x00007ff80ebf3000 /System/Library/PrivateFrameworks/DFRFoundation.framework/Versions/A/DFRFoundation
|
||||
0x00007ff806f74000 /usr/lib/libicucore.A.dylib
|
||||
0x00007ff8147de000 /System/Library/Frameworks/AudioToolbox.framework/Versions/A/AudioToolbox
|
||||
0x00007ff813818000 /System/Library/PrivateFrameworks/DataDetectorsCore.framework/Versions/A/DataDetectorsCore
|
||||
0x00007ff90d15c000 /System/Library/PrivateFrameworks/TextInput.framework/Versions/A/TextInput
|
||||
0x00007ff8095a9000 /usr/lib/libMobileGestalt.dylib
|
||||
0x00007ff80e957000 /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/HIToolbox.framework/Versions/A/HIToolbox
|
||||
0x00007ff80c588000 /System/Library/Frameworks/QuartzCore.framework/Versions/A/QuartzCore
|
||||
0x00007ff806bd7000 /System/Library/Frameworks/Security.framework/Versions/A/Security
|
||||
0x00007ff818388000 /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/SpeechRecognition.framework/Versions/A/SpeechRecognition
|
||||
0x00007ff80c97c000 /System/Library/PrivateFrameworks/CoreUI.framework/Versions/A/CoreUI
|
||||
0x00007ff8064c9000 /System/Library/Frameworks/CoreAudio.framework/Versions/A/CoreAudio
|
||||
0x00007ff80bed1000 /System/Library/Frameworks/DiskArbitration.framework/Versions/A/DiskArbitration
|
||||
0x00007ff812ff9000 /System/Library/PrivateFrameworks/MultitouchSupport.framework/Versions/A/MultitouchSupport
|
||||
0x00007ff8095a8000 /usr/lib/libenergytrace.dylib
|
||||
0x00007ff822d9f000 /System/Library/PrivateFrameworks/RenderBox.framework/Versions/A/RenderBox
|
||||
0x00007ff807590000 /System/Library/Frameworks/IOKit.framework/Versions/A/IOKit
|
||||
0x00007ff8187a0000 /System/Library/Frameworks/CoreServices.framework/Versions/A/CoreServices
|
||||
0x00007ff80cbe4000 /System/Library/PrivateFrameworks/PerformanceAnalysis.framework/Versions/A/PerformanceAnalysis
|
||||
0x00007ffa1f5dd000 /System/Library/Frameworks/OpenGL.framework/Versions/A/OpenGL
|
||||
0x00007ff80cc99000 /usr/lib/libxml2.2.dylib
|
||||
0x00007ff8101c7000 /System/Library/PrivateFrameworks/MobileKeyBag.framework/Versions/A/MobileKeyBag
|
||||
0x00007ff803c3b000 /usr/lib/libobjc.A.dylib
|
||||
0x00007ff803f33000 /usr/lib/libc++.1.dylib
|
||||
0x00007ff818717000 /System/Library/Frameworks/Accessibility.framework/Versions/A/Accessibility
|
||||
0x00007ff80a25c000 /System/Library/Frameworks/ColorSync.framework/Versions/A/ColorSync
|
||||
0x00007ff80406b000 /System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation
|
||||
0x00007ff80ef74000 /System/Library/Frameworks/CoreImage.framework/Versions/A/CoreImage
|
||||
0x00007ff8062c4000 /System/Library/Frameworks/CoreText.framework/Versions/A/CoreText
|
||||
0x00007ffb053e6000 /System/Library/Frameworks/CoreTransferable.framework/Versions/A/CoreTransferable
|
||||
0x00007ffb0582f000 /System/Library/Frameworks/DeveloperToolsSupport.framework/Versions/A/DeveloperToolsSupport
|
||||
0x00007ff80ec45000 /System/Library/Frameworks/ImageIO.framework/Versions/A/ImageIO
|
||||
0x00007ffb09de7000 /System/Library/Frameworks/Symbols.framework/Versions/A/Symbols
|
||||
0x00007ff810e7e000 /System/Library/PrivateFrameworks/SoftLinking.framework/Versions/A/SoftLinking
|
||||
0x00007ff814256000 /usr/lib/swift/libswiftCore.dylib
|
||||
0x00007ff909e25000 /usr/lib/swift/libswiftCoreFoundation.dylib
|
||||
0x00007ff907d55000 /usr/lib/swift/libswiftCoreGraphics.dylib
|
||||
0x00007ff909e62000 /usr/lib/swift/libswiftCoreImage.dylib
|
||||
0x00007ff907d5c000 /usr/lib/swift/libswiftDarwin.dylib
|
||||
0x00007ff81a10f000 /usr/lib/swift/libswiftDispatch.dylib
|
||||
0x00007ff909e63000 /usr/lib/swift/libswiftIOKit.dylib
|
||||
0x00007ff915e23000 /usr/lib/swift/libswiftMetal.dylib
|
||||
0x00007ff922880000 /usr/lib/swift/libswiftOSLog.dylib
|
||||
0x00007ff81c881000 /usr/lib/swift/libswiftObjectiveC.dylib
|
||||
0x00007ff919a28000 /usr/lib/swift/libswiftQuartzCore.dylib
|
||||
0x00007ff91da9b000 /usr/lib/swift/libswiftUniformTypeIdentifiers.dylib
|
||||
0x00007ff909e35000 /usr/lib/swift/libswiftXPC.dylib
|
||||
0x00007ffc1883d000 /usr/lib/swift/libswift_Concurrency.dylib
|
||||
0x00007ff81c885000 /usr/lib/swift/libswiftos.dylib
|
||||
0x00007ff90d0be000 /usr/lib/swift/libswiftsimd.dylib
|
||||
0x00007ff811016000 /usr/lib/libcompression.dylib
|
||||
0x00007ff81374c000 /System/Library/PrivateFrameworks/TextureIO.framework/Versions/A/TextureIO
|
||||
0x00007ff8126cd000 /usr/lib/libate.dylib
|
||||
0x00007ff810e72000 /usr/lib/system/libcache.dylib
|
||||
0x00007ff810e2d000 /usr/lib/system/libcommonCrypto.dylib
|
||||
0x00007ff810e56000 /usr/lib/system/libcompiler_rt.dylib
|
||||
0x00007ff810e4c000 /usr/lib/system/libcopyfile.dylib
|
||||
0x00007ff803d7c000 /usr/lib/system/libcorecrypto.dylib
|
||||
0x00007ff803e61000 /usr/lib/system/libdispatch.dylib
|
||||
0x00007ff804012000 /usr/lib/system/libdyld.dylib
|
||||
0x00007ff810e68000 /usr/lib/system/libkeymgr.dylib
|
||||
0x00007ff810e09000 /usr/lib/system/libmacho.dylib
|
||||
0x00007ff8102a1000 /usr/lib/system/libquarantine.dylib
|
||||
0x00007ff810e66000 /usr/lib/system/libremovefile.dylib
|
||||
0x00007ff80961a000 /usr/lib/system/libsystem_asl.dylib
|
||||
0x00007ff803d1a000 /usr/lib/system/libsystem_blocks.dylib
|
||||
0x00007ff803eab000 /usr/lib/system/libsystem_c.dylib
|
||||
0x00007ff810e5e000 /usr/lib/system/libsystem_collections.dylib
|
||||
0x00007ff80f3bf000 /usr/lib/system/libsystem_configuration.dylib
|
||||
0x00007ff80e434000 /usr/lib/system/libsystem_containermanager.dylib
|
||||
0x00007ff810a66000 /usr/lib/system/libsystem_coreservices.dylib
|
||||
0x00007ff80720a000 /usr/lib/system/libsystem_darwin.dylib
|
||||
0x00007ffc18b59000 /usr/lib/system/libsystem_darwindirectory.dylib
|
||||
0x00007ff810e69000 /usr/lib/system/libsystem_dnssd.dylib
|
||||
0x00007ff803ea8000 /usr/lib/system/libsystem_featureflags.dylib
|
||||
0x00007ff804040000 /usr/lib/system/libsystem_info.dylib
|
||||
0x00007ff810da1000 /usr/lib/system/libsystem_m.dylib
|
||||
0x00007ff803e28000 /usr/lib/system/libsystem_malloc.dylib
|
||||
0x00007ff809590000 /usr/lib/system/libsystem_networkextension.dylib
|
||||
0x00007ff807653000 /usr/lib/system/libsystem_notify.dylib
|
||||
0x00007ff80f3c3000 /usr/lib/system/libsystem_sandbox.dylib
|
||||
0x00007ff810e63000 /usr/lib/system/libsystem_secinit.dylib
|
||||
0x00007ff803fcb000 /usr/lib/system/libsystem_kernel.dylib
|
||||
0x00007ff804036000 /usr/lib/system/libsystem_platform.dylib
|
||||
0x00007ff804006000 /usr/lib/system/libsystem_pthread.dylib
|
||||
0x00007ff80b191000 /usr/lib/system/libsystem_symptoms.dylib
|
||||
0x00007ff803d62000 /usr/lib/system/libsystem_trace.dylib
|
||||
0x00007ff810e39000 /usr/lib/system/libunwind.dylib
|
||||
0x00007ff803d1e000 /usr/lib/system/libxpc.dylib
|
||||
0x00007ff803fb2000 /usr/lib/libc++abi.dylib
|
||||
0x00007ff810e44000 /usr/lib/liboah.dylib
|
||||
0x00007ff81247c000 /usr/lib/liblzma.5.dylib
|
||||
0x00007ff810e7a000 /usr/lib/libfakelink.dylib
|
||||
0x00007ff8091e3000 /System/Library/Frameworks/CFNetwork.framework/Versions/A/CFNetwork
|
||||
0x00007ff810ecc000 /usr/lib/libarchive.2.dylib
|
||||
0x00007ff816600000 /System/Library/Frameworks/Combine.framework/Versions/A/Combine
|
||||
0x00007ffb0ee0a000 /System/Library/PrivateFrameworks/CollectionsInternal.framework/Versions/A/CollectionsInternal
|
||||
0x00007ffc040bb000 /System/Library/PrivateFrameworks/ReflectionInternal.framework/Versions/A/ReflectionInternal
|
||||
0x00007ffc0469c000 /System/Library/PrivateFrameworks/RuntimeInternal.framework/Versions/A/RuntimeInternal
|
||||
0x00007ffc18978000 /usr/lib/swift/libswift_StringProcessing.dylib
|
||||
0x00007ff80750f000 /System/Library/PrivateFrameworks/CoreServicesInternal.framework/Versions/A/CoreServicesInternal
|
||||
0x00007ff8102c8000 /usr/lib/libbsm.0.dylib
|
||||
0x00007ff810e11000 /usr/lib/system/libkxld.dylib
|
||||
0x00007ff80cc18000 /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/FSEvents.framework/Versions/A/FSEvents
|
||||
0x00007ff807215000 /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/CarbonCore.framework/Versions/A/CarbonCore
|
||||
0x00007ff80be39000 /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/Metadata.framework/Versions/A/Metadata
|
||||
0x00007ff810a6c000 /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/OSServices.framework/Versions/A/OSServices
|
||||
0x00007ff810f55000 /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/SearchKit.framework/Versions/A/SearchKit
|
||||
0x00007ff80b117000 /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/AE.framework/Versions/A/AE
|
||||
0x00007ff804506000 /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/LaunchServices.framework/Versions/A/LaunchServices
|
||||
0x00007ff81242d000 /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/DictionaryServices.framework/Versions/A/DictionaryServices
|
||||
0x00007ff80cc25000 /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/SharedFileList.framework/Versions/A/SharedFileList
|
||||
0x00007ff810fdf000 /usr/lib/libapple_nghttp2.dylib
|
||||
0x00007ff80ada7000 /usr/lib/libsqlite3.dylib
|
||||
0x00007ff80b199000 /System/Library/Frameworks/Network.framework/Versions/A/Network
|
||||
0x00007ffc171dd000 /usr/lib/libCoreEntitlements.dylib
|
||||
0x00007ffb1fbb1000 /System/Library/PrivateFrameworks/MessageSecurity.framework/Versions/A/MessageSecurity
|
||||
0x00007ff80ad8e000 /System/Library/PrivateFrameworks/ProtocolBuffer.framework/Versions/A/ProtocolBuffer
|
||||
0x00007ff810989000 /System/Library/PrivateFrameworks/AppleFSCompression.framework/Versions/A/AppleFSCompression
|
||||
0x00007ff8102b0000 /usr/lib/libcoretls.dylib
|
||||
0x00007ff812495000 /usr/lib/libcoretls_cfhelpers.dylib
|
||||
0x00007ff811010000 /usr/lib/libpam.2.dylib
|
||||
0x00007ff81250d000 /usr/lib/libxar.1.dylib
|
||||
0x00007ff812a00000 /usr/lib/libheimdal-asn1.dylib
|
||||
0x00007ff8091e2000 /usr/lib/libnetwork.dylib
|
||||
0x00007ff810e7f000 /usr/lib/libpcap.A.dylib
|
||||
0x00007ff80b187000 /usr/lib/libdns_services.dylib
|
||||
0x00007ff80f3ca000 /System/Library/PrivateFrameworks/AppleSystemInfo.framework/Versions/A/AppleSystemInfo
|
||||
0x00007ff80ffc9000 /System/Library/PrivateFrameworks/IOMobileFramebuffer.framework/Versions/A/IOMobileFramebuffer
|
||||
0x00007ffc188c4000 /usr/lib/swift/libswift_RegexParser.dylib
|
||||
0x00007ff810a57000 /usr/lib/libbz2.1.0.dylib
|
||||
0x00007ff8102a4000 /usr/lib/libCheckFix.dylib
|
||||
0x00007ff809631000 /System/Library/PrivateFrameworks/TCC.framework/Versions/A/TCC
|
||||
0x00007ff80f3d0000 /System/Library/PrivateFrameworks/CoreNLP.framework/Versions/A/CoreNLP
|
||||
0x00007ff80bdf3000 /System/Library/PrivateFrameworks/MetadataUtilities.framework/Versions/A/MetadataUtilities
|
||||
0x00007ff8102d8000 /usr/lib/libmecab.dylib
|
||||
0x00007ff804d63000 /usr/lib/libCRFSuite.dylib
|
||||
0x00007ff810331000 /usr/lib/libgermantok.dylib
|
||||
0x00007ff810fbb000 /usr/lib/libThaiTokenizer.dylib
|
||||
0x00007ff80bed9000 /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vImage.framework/Versions/A/vImage
|
||||
0x00007ff818773000 /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/vecLib
|
||||
0x00007ff81254f000 /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libvMisc.dylib
|
||||
0x00007ff80fdb9000 /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libvDSP.dylib
|
||||
0x00007ff80490c000 /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libBLAS.dylib
|
||||
0x00007ff8110f6000 /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libLAPACK.dylib
|
||||
0x00007ff810334000 /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libLinearAlgebra.dylib
|
||||
0x00007ff810ffa000 /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libSparseBLAS.dylib
|
||||
0x00007ff8110f0000 /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libQuadrature.dylib
|
||||
0x00007ff80f4df000 /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libBNNS.dylib
|
||||
0x00007ff804c64000 /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libSparse.dylib
|
||||
0x00007ffb1e4ff000 /System/Library/PrivateFrameworks/MIL.framework/Versions/A/MIL
|
||||
0x00007ff810eb4000 /usr/lib/libiconv.2.dylib
|
||||
0x00007ff810e05000 /usr/lib/libcharset.1.dylib
|
||||
0x00007ff80cbfc000 /System/Library/Frameworks/OpenDirectory.framework/Versions/A/Frameworks/CFOpenDirectory.framework/Versions/A/CFOpenDirectory
|
||||
0x00007ff80cbf0000 /System/Library/Frameworks/OpenDirectory.framework/Versions/A/OpenDirectory
|
||||
0x00007ff812497000 /System/Library/PrivateFrameworks/APFS.framework/Versions/A/APFS
|
||||
0x00007ff8101ea000 /System/Library/Frameworks/SecurityFoundation.framework/Versions/A/SecurityFoundation
|
||||
0x00007ff81251b000 /usr/lib/libutil.dylib
|
||||
0x00007ffb1c9cc000 /System/Library/PrivateFrameworks/InstalledContentLibrary.framework/Versions/A/InstalledContentLibrary
|
||||
0x00007ff807550000 /System/Library/PrivateFrameworks/CoreServicesStore.framework/Versions/A/CoreServicesStore
|
||||
0x00007ffb0cd3d000 /System/Library/PrivateFrameworks/AppleMobileFileIntegrity.framework/Versions/A/AppleMobileFileIntegrity
|
||||
0x00007ff909e05000 /usr/lib/libmis.dylib
|
||||
0x00007ff919ef5000 /System/Library/PrivateFrameworks/MobileSystemServices.framework/Versions/A/MobileSystemServices
|
||||
0x00007ffa1788c000 /System/Library/PrivateFrameworks/ConfigProfileHelper.framework/Versions/A/ConfigProfileHelper
|
||||
0x00007ff810fbd000 /System/Library/PrivateFrameworks/AppleSauce.framework/Versions/A/AppleSauce
|
||||
0x00007ff805c62000 /System/Library/PrivateFrameworks/LanguageModeling.framework/Versions/A/LanguageModeling
|
||||
0x00007ff81251f000 /usr/lib/libxslt.1.dylib
|
||||
0x00007ff810ebb000 /usr/lib/libcmph.dylib
|
||||
0x00007ff80ff98000 /System/Library/PrivateFrameworks/CoreEmoji.framework/Versions/A/CoreEmoji
|
||||
0x00007ff80f4da000 /System/Library/PrivateFrameworks/LinguisticData.framework/Versions/A/LinguisticData
|
||||
0x00007ff804b81000 /System/Library/PrivateFrameworks/Lexicon.framework/Versions/A/Lexicon
|
||||
0x00007ff810273000 /System/Library/PrivateFrameworks/BackgroundTaskManagement.framework/Versions/A/BackgroundTaskManagement
|
||||
0x00007ffc17359000 /usr/lib/libTLE.dylib
|
||||
0x00007ff812ebb000 /System/Library/PrivateFrameworks/AppleJPEG.framework/Versions/A/AppleJPEG
|
||||
0x00007ff8129e5000 /usr/lib/libexpat.1.dylib
|
||||
0x00007ff8135a2000 /System/Library/Frameworks/ImageIO.framework/Versions/A/Resources/libPng.dylib
|
||||
0x00007ff8135cf000 /System/Library/Frameworks/ImageIO.framework/Versions/A/Resources/libTIFF.dylib
|
||||
0x00007ff8136c4000 /System/Library/Frameworks/ImageIO.framework/Versions/A/Resources/libGIF.dylib
|
||||
0x00007ff812f07000 /System/Library/Frameworks/ImageIO.framework/Versions/A/Resources/libJP2.dylib
|
||||
0x00007ff813663000 /System/Library/Frameworks/ImageIO.framework/Versions/A/Resources/libJPEG.dylib
|
||||
0x00007ff81365a000 /System/Library/Frameworks/ImageIO.framework/Versions/A/Resources/libRadiance.dylib
|
||||
0x00007ff80e7f7000 /System/Library/PrivateFrameworks/FontServices.framework/libFontParser.dylib
|
||||
0x00007ff80b0b8000 /System/Library/PrivateFrameworks/RunningBoardServices.framework/Versions/A/RunningBoardServices
|
||||
0x00007ff81f18b000 /System/Library/PrivateFrameworks/IOSurfaceAccelerator.framework/Versions/A/IOSurfaceAccelerator
|
||||
0x00007ff812ff5000 /System/Library/PrivateFrameworks/WatchdogClient.framework/Versions/A/WatchdogClient
|
||||
0x00007ff805e2b000 /System/Library/Frameworks/CoreDisplay.framework/Versions/A/CoreDisplay
|
||||
0x00007ff80e6c9000 /System/Library/Frameworks/CoreMedia.framework/Versions/A/CoreMedia
|
||||
0x00007ff80e473000 /System/Library/PrivateFrameworks/IOAccelerator.framework/Versions/A/IOAccelerator
|
||||
0x00007ff80cd78000 /System/Library/Frameworks/CoreVideo.framework/Versions/A/CoreVideo
|
||||
0x00007ff81100e000 /System/Library/Frameworks/MetalPerformanceShaders.framework/Versions/A/MetalPerformanceShaders
|
||||
0x00007ff813036000 /System/Library/Frameworks/VideoToolbox.framework/Versions/A/VideoToolbox
|
||||
0x00007ff80ce04000 /System/Library/PrivateFrameworks/UserManagement.framework/Versions/A/UserManagement
|
||||
0x00007ff80afea000 /System/Library/PrivateFrameworks/BaseBoard.framework/Versions/A/BaseBoard
|
||||
0x00007ff80f3c9000 /System/Library/PrivateFrameworks/AggregateDictionary.framework/Versions/A/AggregateDictionary
|
||||
0x00007ffb0ccc1000 /System/Library/PrivateFrameworks/AppleKeyStore.framework/Versions/A/AppleKeyStore
|
||||
0x00007ff813653000 /System/Library/PrivateFrameworks/GPUWrangler.framework/Versions/A/GPUWrangler
|
||||
0x00007ff813637000 /System/Library/PrivateFrameworks/IOPresentment.framework/Versions/A/IOPresentment
|
||||
0x00007ff81365d000 /System/Library/PrivateFrameworks/DSExternalDisplay.framework/Versions/A/DSExternalDisplay
|
||||
0x00007ffb18a5e000 /System/Library/PrivateFrameworks/GPUCompiler.framework/Versions/32023/Libraries/libllvm-flatbuffers.dylib
|
||||
0x00007ffa1f5d1000 /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libCoreFSCache.dylib
|
||||
0x00007ffb155de000 /System/Library/PrivateFrameworks/GPUCompiler.framework/Versions/32023/Libraries/libGPUCompilerUtils.dylib
|
||||
0x00007ff8136ca000 /System/Library/PrivateFrameworks/CMCaptureCore.framework/Versions/A/CMCaptureCore
|
||||
0x00007ffb05911000 /System/Library/Frameworks/ExtensionFoundation.framework/Versions/A/ExtensionFoundation
|
||||
0x00007ff81a936000 /System/Library/PrivateFrameworks/CoreTime.framework/Versions/A/CoreTime
|
||||
0x00007ff812bad000 /System/Library/PrivateFrameworks/AppServerSupport.framework/Versions/A/AppServerSupport
|
||||
0x00007ff81512e000 /System/Library/PrivateFrameworks/perfdata.framework/Versions/A/perfdata
|
||||
0x00007ff805f57000 /System/Library/PrivateFrameworks/AudioToolboxCore.framework/Versions/A/AudioToolboxCore
|
||||
0x00007ff80e6a3000 /System/Library/PrivateFrameworks/caulk.framework/Versions/A/caulk
|
||||
0x00007ff8149cc000 /usr/lib/libAudioStatistics.dylib
|
||||
0x00007ff9091fe000 /System/Library/PrivateFrameworks/SystemPolicy.framework/Versions/A/SystemPolicy
|
||||
0x00007ff814c98000 /usr/lib/libSMC.dylib
|
||||
0x00007ff81e87b000 /System/Library/Frameworks/CoreMIDI.framework/Versions/A/CoreMIDI
|
||||
0x00007ff813569000 /usr/lib/libAudioToolboxUtility.dylib
|
||||
0x00007ff904c65000 /System/Library/PrivateFrameworks/OSAServicesClient.framework/Versions/A/OSAServicesClient
|
||||
0x00007ff81513b000 /usr/lib/libperfcheck.dylib
|
||||
0x00007ff8128c6000 /System/Library/PrivateFrameworks/PlugInKit.framework/Versions/A/PlugInKit
|
||||
0x00007ff8101dd000 /System/Library/PrivateFrameworks/AssertionServices.framework/Versions/A/AssertionServices
|
||||
0x00007ffa069ba000 /System/Library/PrivateFrameworks/Symbolication.framework/Versions/A/Symbolication
|
||||
0x00007ffb23182000 /System/Library/PrivateFrameworks/PhotosensitivityProcessing.framework/Versions/A/PhotosensitivityProcessing
|
||||
0x00007ffa20bdd000 /System/Library/Frameworks/OpenCL.framework/Versions/A/OpenCL
|
||||
0x00007ff812b58000 /System/Library/PrivateFrameworks/GraphVisualizer.framework/Versions/A/GraphVisualizer
|
||||
0x00007ffa1f62e000 /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGLU.dylib
|
||||
0x00007ffa1f5f0000 /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGFXShared.dylib
|
||||
0x00007ffa1f7ed000 /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGL.dylib
|
||||
0x00007ffa1f5f8000 /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGLImage.dylib
|
||||
0x00007ffa1f5ed000 /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libCVMSPluginSupport.dylib
|
||||
0x00007ffc17313000 /usr/lib/libRosetta.dylib
|
||||
0x00007ffa1f5d8000 /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libCoreVMClient.dylib
|
||||
0x00007ffb1371c000 /System/Library/PrivateFrameworks/FontServices.framework/Versions/A/FontServices
|
||||
0x00007ff812b67000 /System/Library/PrivateFrameworks/OTSVG.framework/Versions/A/OTSVG
|
||||
0x00007ff80c930000 /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ATS.framework/Versions/A/Resources/libFontRegistry.dylib
|
||||
0x00007ff812bb7000 /System/Library/PrivateFrameworks/FontServices.framework/libhvf.dylib
|
||||
0x00007ffb1371d000 /System/Library/PrivateFrameworks/FontServices.framework/libXTFontStaticRegistryData.dylib
|
||||
0x00007ff80f33e000 /System/Library/Frameworks/MetalPerformanceShaders.framework/Versions/A/Frameworks/MPSCore.framework/Versions/A/MPSCore
|
||||
0x00007ff8108ef000 /System/Library/Frameworks/MetalPerformanceShaders.framework/Versions/A/Frameworks/MPSImage.framework/Versions/A/MPSImage
|
||||
0x00007ff81034a000 /System/Library/Frameworks/MetalPerformanceShaders.framework/Versions/A/Frameworks/MPSNeuralNetwork.framework/Versions/A/MPSNeuralNetwork
|
||||
0x00007ff8107c3000 /System/Library/Frameworks/MetalPerformanceShaders.framework/Versions/A/Frameworks/MPSMatrix.framework/Versions/A/MPSMatrix
|
||||
0x00007ff810576000 /System/Library/Frameworks/MetalPerformanceShaders.framework/Versions/A/Frameworks/MPSRayIntersector.framework/Versions/A/MPSRayIntersector
|
||||
0x00007ff8107fe000 /System/Library/Frameworks/MetalPerformanceShaders.framework/Versions/A/Frameworks/MPSNDArray.framework/Versions/A/MPSNDArray
|
||||
0x00007ffb075d5000 /System/Library/Frameworks/MetalPerformanceShaders.framework/Versions/A/Frameworks/MPSFunctions.framework/Versions/A/MPSFunctions
|
||||
0x00007ffb075b7000 /System/Library/Frameworks/MetalPerformanceShaders.framework/Versions/A/Frameworks/MPSBenchmarkLoop.framework/Versions/A/MPSBenchmarkLoop
|
||||
0x00007ff8047bc000 /System/Library/PrivateFrameworks/MetalTools.framework/Versions/A/MetalTools
|
||||
0x00007ff90e3f8000 /System/Library/PrivateFrameworks/IOAccelMemoryInfo.framework/Versions/A/IOAccelMemoryInfo
|
||||
0x00007ff919e07000 /System/Library/PrivateFrameworks/kperf.framework/Versions/A/kperf
|
||||
0x00007ff909e18000 /System/Library/PrivateFrameworks/GPURawCounter.framework/Versions/A/GPURawCounter
|
||||
0x00007ff81a82a000 /System/Library/PrivateFrameworks/CoreSymbolication.framework/Versions/A/CoreSymbolication
|
||||
0x00007ff909dd6000 /System/Library/PrivateFrameworks/MallocStackLogging.framework/Versions/A/MallocStackLogging
|
||||
0x00007ff81276d000 /System/Library/PrivateFrameworks/CrashReporterSupport.framework/Versions/A/CrashReporterSupport
|
||||
0x00007ff81a7eb000 /System/Library/PrivateFrameworks/DebugSymbols.framework/Versions/A/DebugSymbols
|
||||
0x00007ff91913a000 /System/Library/PrivateFrameworks/OSAnalytics.framework/Versions/A/OSAnalytics
|
||||
0x00007ffc0e885000 /System/Library/PrivateFrameworks/VideoToolboxParavirtualizationSupport.framework/Versions/A/VideoToolboxParavirtualizationSupport
|
||||
0x00007ff812995000 /System/Library/PrivateFrameworks/AppleVA.framework/Versions/A/AppleVA
|
||||
0x00007ff814a10000 /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ATS.framework/Versions/A/ATS
|
||||
0x00007ff80a409000 /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/HIServices.framework/Versions/A/HIServices
|
||||
0x00007ff8136d8000 /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/PrintCore.framework/Versions/A/PrintCore
|
||||
0x00007ff814dee000 /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/QD.framework/Versions/A/QD
|
||||
0x00007ff814de6000 /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ColorSyncLegacy.framework/Versions/A/ColorSyncLegacy
|
||||
0x00007ff8149e4000 /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/SpeechSynthesis.framework/Versions/A/SpeechSynthesis
|
||||
0x00007ff813694000 /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ATSUI.framework/Versions/A/ATSUI
|
||||
0x00007ff814d78000 /usr/lib/libcups.2.dylib
|
||||
0x00007ff81514a000 /System/Library/Frameworks/Kerberos.framework/Versions/A/Kerberos
|
||||
0x00007ff815159000 /System/Library/Frameworks/GSS.framework/Versions/A/GSS
|
||||
0x00007ff814a89000 /usr/lib/libresolv.9.dylib
|
||||
0x00007ff812bc9000 /System/Library/PrivateFrameworks/Heimdal.framework/Versions/A/Heimdal
|
||||
0x00007ff81c7ee000 /System/Library/Frameworks/Kerberos.framework/Versions/A/Libraries/libHeimdalProxy.dylib
|
||||
0x00007ff8151a6000 /System/Library/PrivateFrameworks/CommonAuth.framework/Versions/A/CommonAuth
|
||||
0x00007ffb04807000 /System/Library/Frameworks/AVFAudio.framework/Versions/A/AVFAudio
|
||||
0x00007ff904cae000 /System/Library/PrivateFrameworks/AXCoreUtilities.framework/Versions/A/AXCoreUtilities
|
||||
0x00007ff814954000 /System/Library/PrivateFrameworks/AudioSession.framework/Versions/A/AudioSession
|
||||
0x00007ff8163c8000 /System/Library/Frameworks/IOBluetooth.framework/Versions/A/IOBluetooth
|
||||
0x00007ff812aa4000 /System/Library/PrivateFrameworks/MediaExperience.framework/Versions/A/MediaExperience
|
||||
0x00007ff8147a9000 /System/Library/PrivateFrameworks/AudioSession.framework/libSessionUtility.dylib
|
||||
0x00007ff814dfa000 /System/Library/PrivateFrameworks/AudioResourceArbitration.framework/Versions/A/AudioResourceArbitration
|
||||
0x00007ff8194ac000 /System/Library/PrivateFrameworks/PowerLog.framework/Versions/A/PowerLog
|
||||
0x00007ff8193cd000 /System/Library/Frameworks/CoreBluetooth.framework/Versions/A/CoreBluetooth
|
||||
0x00007ff81c7ef000 /System/Library/Frameworks/AudioUnit.framework/Versions/A/AudioUnit
|
||||
0x00007ff810051000 /System/Library/PrivateFrameworks/CoreUtils.framework/Versions/A/CoreUtils
|
||||
0x00007ffb11ef1000 /System/Library/PrivateFrameworks/CoreUtilsExtras.framework/Versions/A/CoreUtilsExtras
|
||||
0x00007ffb1c859000 /System/Library/PrivateFrameworks/IO80211.framework/Versions/A/IO80211
|
||||
0x00007ff904cc5000 /usr/lib/libAccessibility.dylib
|
||||
0x00007ff818aed000 /System/Library/Frameworks/MediaAccessibility.framework/Versions/A/MediaAccessibility
|
||||
0x00007ff81a34a000 /System/Library/PrivateFrameworks/FrontBoardServices.framework/Versions/A/FrontBoardServices
|
||||
0x00007ff81bde7000 /System/Library/PrivateFrameworks/BackBoardServices.framework/Versions/A/BackBoardServices
|
||||
0x00007ff81a406000 /System/Library/PrivateFrameworks/BoardServices.framework/Versions/A/BoardServices
|
||||
0x00007ff812a09000 /System/Library/PrivateFrameworks/IconFoundation.framework/Versions/A/IconFoundation
|
||||
0x00007ff818378000 /System/Library/PrivateFrameworks/SpeechRecognitionCore.framework/Versions/A/SpeechRecognitionCore
|
||||
0x00007ffa0a12f000 /System/Library/Frameworks/OSLog.framework/Versions/A/OSLog
|
||||
0x00007ff909d63000 /System/Library/PrivateFrameworks/LoggingSupport.framework/Versions/A/LoggingSupport
|
||||
0x0000000104d37000 /Users/maggicl/Library/Java/JavaVirtualMachines/temurin-1.8.0_345/Contents/Home/jre/lib/server/libjvm.dylib
|
||||
0x0000000103a12000 /Users/maggicl/Library/Java/JavaVirtualMachines/temurin-1.8.0_345/Contents/Home/jre/lib/libverify.dylib
|
||||
0x0000000103a69000 /Users/maggicl/Library/Java/JavaVirtualMachines/temurin-1.8.0_345/Contents/Home/jre/lib/libjava.dylib
|
||||
0x0000000103aae000 /Users/maggicl/Library/Java/JavaVirtualMachines/temurin-1.8.0_345/Contents/Home/jre/lib/libinstrument.dylib
|
||||
0x0000000103a33000 /Users/maggicl/Library/Java/JavaVirtualMachines/temurin-1.8.0_345/Contents/Home/jre/lib/libzip.dylib
|
||||
0x0000000103d01000 /Users/maggicl/Library/Java/JavaVirtualMachines/temurin-1.8.0_345/Contents/Home/jre/lib/libnio.dylib
|
||||
0x0000000103d1a000 /Users/maggicl/Library/Java/JavaVirtualMachines/temurin-1.8.0_345/Contents/Home/jre/lib/libnet.dylib
|
||||
|
||||
VM Arguments:
|
||||
jvm_args: -javaagent:agent/agent.jar=hello
|
||||
java_command: ch.usi.inf.sp.dbi.Application
|
||||
java_class_path (initial): out/production/application:out/production/profiler:agent/lib:agent/agent.jar
|
||||
Launcher Type: SUN_STANDARD
|
||||
|
||||
Environment Variables:
|
||||
JAVA_HOME=/Users/maggicl/Library/Java/JavaVirtualMachines/temurin-1.8.0_345/Contents/Home
|
||||
PATH=/Users/maggicl/Library/Java/JavaVirtualMachines/temurin-1.8.0_345/Contents/Home/bin:/Users/maggicl/Library/Java/JavaVirtualMachines/temurin-1.8.0_345/Contents/Home/bin:/usr/local/Caskroom/miniconda/base/bin:/usr/local/Caskroom/miniconda/base/condabin:/Users/maggicl/.opam/default/bin:/Users/maggicl/.local/bin:/Users/maggicl/Library/Java/JavaVirtualMachines/temurin-17.0.5/Contents/Home/bin:/Users/maggicl/bin:/Users/maggicl/git/github/hledger/bin:/usr/local/sbin:/usr/local/bin:/usr/local/bin:/usr/local/opt/coreutils/libexec/gnubin:/usr/local/bin:/System/Cryptexes/App/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin:/opt/X11/bin:/Library/TeX/texbin:/Applications/VMware Fusion.app/Contents/Public:/usr/local/zfs/bin
|
||||
SHELL=/bin/zsh
|
||||
DISPLAY=/private/tmp/com.apple.launchd.dJ1oHJt1k4/org.xquartz:0
|
||||
|
||||
Signal Handlers:
|
||||
SIGSEGV: [libjvm.dylib+0x59c563], sa_mask[0]=11111111011111110111111111111111, sa_flags=SA_ONSTACK|SA_RESTART|SA_SIGINFO
|
||||
SIGBUS: [libjvm.dylib+0x59c563], sa_mask[0]=11111111011111110111111111111111, sa_flags=SA_RESTART|SA_SIGINFO
|
||||
SIGFPE: [libjvm.dylib+0x48f1f7], sa_mask[0]=11111111011111110111111111111111, sa_flags=SA_RESTART|SA_SIGINFO
|
||||
SIGPIPE: [libjvm.dylib+0x48f1f7], sa_mask[0]=11111111011111110111111111111111, sa_flags=SA_RESTART|SA_SIGINFO
|
||||
SIGXFSZ: [libjvm.dylib+0x48f1f7], sa_mask[0]=11111111011111110111111111111111, sa_flags=SA_RESTART|SA_SIGINFO
|
||||
SIGILL: [libjvm.dylib+0x48f1f7], sa_mask[0]=11111111011111110111111111111111, sa_flags=SA_RESTART|SA_SIGINFO
|
||||
SIGUSR1: SIG_DFL, sa_mask[0]=00000000000000000000000000000000, sa_flags=SA_RESTART
|
||||
SIGUSR2: [libjvm.dylib+0x48faee], sa_mask[0]=00000000000000000000000000000000, sa_flags=SA_RESTART|SA_SIGINFO
|
||||
SIGHUP: [libjvm.dylib+0x48dce1], sa_mask[0]=11111111011111110111111111111111, sa_flags=SA_RESTART|SA_SIGINFO
|
||||
SIGINT: [libjvm.dylib+0x48dce1], sa_mask[0]=11111111011111110111111111111111, sa_flags=SA_RESTART|SA_SIGINFO
|
||||
SIGTERM: [libjvm.dylib+0x48dce1], sa_mask[0]=11111111011111110111111111111111, sa_flags=SA_RESTART|SA_SIGINFO
|
||||
SIGQUIT: [libjvm.dylib+0x48dce1], sa_mask[0]=11111111011111110111111111111111, sa_flags=SA_RESTART|SA_SIGINFO
|
||||
|
||||
|
||||
--------------- S Y S T E M ---------------
|
||||
|
||||
OS:Bsduname:Darwin 23.1.0 Darwin Kernel Version 23.1.0: Mon Oct 9 21:27:27 PDT 2023; root:xnu-10002.41.9~6/RELEASE_X86_64 x86_64
|
||||
rlimit: STACK 8192k, CORE 0k, NPROC 2784, NOFILE 10240, AS infinity
|
||||
load average:2.37 2.10 1.88
|
||||
|
||||
CPU:total 12 (initial active 12) (6 cores per cpu, 2 threads per core) family 6 model 158 stepping 10, cmov, cx8, fxsr, mmx, sse, sse2, sse3, ssse3, sse4.1, sse4.2, popcnt, avx, avx2, aes, clmul, erms, 3dnowpref, lzcnt, ht, tsc, tscinvbit, bmi1, bmi2, adx
|
||||
|
||||
Memory: 4k page, physical 16777216k(185044k free)
|
||||
|
||||
/proc/meminfo:
|
||||
|
||||
|
||||
vm_info: OpenJDK 64-Bit Server VM (25.345-b01) for bsd-amd64 JRE (1.8.0_345-b01), built on Aug 2 2022 11:46:33 by "jenkins" with gcc 4.2.1 Compatible Apple LLVM 10.0.1 (clang-1001.0.46.4)
|
||||
|
||||
time: Tue Dec 19 16:09:37 2023
|
||||
timezone: CET
|
||||
elapsed time: 0.147096 seconds (0d 0h 0m 0s)
|
||||
|
62
profiler/src/ch/usi/inf/sp/dbi/profiler/CCTNode.java
Normal file
62
profiler/src/ch/usi/inf/sp/dbi/profiler/CCTNode.java
Normal file
|
@ -0,0 +1,62 @@
|
|||
package ch.usi.inf.sp.dbi.profiler;
|
||||
|
||||
import java.util.*;
|
||||
|
||||
public class CCTNode {
|
||||
private static final String INDENTATION = " ";
|
||||
|
||||
private final IFrame frame;
|
||||
private final Map<IFrame, CCTNode> children = new HashMap<>();
|
||||
|
||||
public CCTNode(IFrame frame) {
|
||||
this.frame = frame;
|
||||
}
|
||||
|
||||
public IFrame getFrame() {
|
||||
return frame;
|
||||
}
|
||||
|
||||
public CCTNode getOrAddChild(IFrame frame) {
|
||||
return children.computeIfAbsent(frame, CCTNode::new);
|
||||
}
|
||||
|
||||
public String toString() {
|
||||
final StringBuilder text = new StringBuilder();
|
||||
int indentationLevel = 0;
|
||||
|
||||
// build a stack of "list-of-children" stacks
|
||||
final Deque<Deque<CCTNode>> toVisit = new ArrayDeque<>();
|
||||
toVisit.push(new ArrayDeque<>(Collections.singletonList(this)));
|
||||
|
||||
while (!toVisit.isEmpty()) {
|
||||
// peek the first "list-of-children" stack. If it's empty, we're done so we de-indent and we pop
|
||||
final Deque<CCTNode> nodes = toVisit.getFirst();
|
||||
if (nodes.isEmpty()) {
|
||||
indentationLevel--;
|
||||
toVisit.pop();
|
||||
continue;
|
||||
}
|
||||
|
||||
// otherwise, we consume one of the children
|
||||
final CCTNode node = nodes.pop();
|
||||
|
||||
// add indentation indentationLevel times
|
||||
for (int i = 0; i < indentationLevel; i++) {
|
||||
text.append(INDENTATION);
|
||||
}
|
||||
|
||||
// and we print it in the tree
|
||||
text.append(node.frame.getName());
|
||||
text.append('\n');
|
||||
|
||||
// if this node has children, we explore them in DFS fashion by adding an element to the "list-of-children"
|
||||
// stack
|
||||
if (!node.children.isEmpty()) {
|
||||
toVisit.push(new ArrayDeque<>(node.children.values()));
|
||||
indentationLevel++;
|
||||
}
|
||||
}
|
||||
|
||||
return text.toString();
|
||||
}
|
||||
}
|
35
profiler/src/ch/usi/inf/sp/dbi/profiler/Frame.java
Normal file
35
profiler/src/ch/usi/inf/sp/dbi/profiler/Frame.java
Normal file
|
@ -0,0 +1,35 @@
|
|||
package ch.usi.inf.sp.dbi.profiler;
|
||||
|
||||
import java.util.Objects;
|
||||
|
||||
public class Frame implements IFrame {
|
||||
private final String className;
|
||||
private final String methodName;
|
||||
private final String methodDescriptor;
|
||||
|
||||
public Frame(String className, String methodName, String methodDescriptor) {
|
||||
this.className = className;
|
||||
this.methodName = methodName;
|
||||
this.methodDescriptor = methodDescriptor;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getName() {
|
||||
return String.format("%s.%s%s", className, methodName, methodDescriptor);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object o) {
|
||||
if (this == o) return true;
|
||||
if (o == null || getClass() != o.getClass()) return false;
|
||||
Frame frame = (Frame) o;
|
||||
return Objects.equals(className, frame.className) &&
|
||||
Objects.equals(methodName, frame.methodName) &&
|
||||
Objects.equals(methodDescriptor, frame.methodDescriptor);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return Objects.hash(className, methodName, methodDescriptor);
|
||||
}
|
||||
}
|
6
profiler/src/ch/usi/inf/sp/dbi/profiler/IFrame.java
Normal file
6
profiler/src/ch/usi/inf/sp/dbi/profiler/IFrame.java
Normal file
|
@ -0,0 +1,6 @@
|
|||
package ch.usi.inf.sp.dbi.profiler;
|
||||
|
||||
public interface IFrame {
|
||||
String getName();
|
||||
boolean equals(Object o);
|
||||
}
|
|
@ -1,95 +1,47 @@
|
|||
package ch.usi.inf.sp.dbi.profiler;
|
||||
|
||||
import javax.sound.midi.*;
|
||||
import javax.swing.*;
|
||||
import java.util.ArrayDeque;
|
||||
import java.util.Collections;
|
||||
import java.util.Deque;
|
||||
|
||||
public class Profiler {
|
||||
|
||||
private static final DefaultListModel<String> model = new DefaultListModel<>();
|
||||
private static int size = 0;
|
||||
private static final CCTNode rootNode = new CCTNode(RootFrame.INSTANCE);
|
||||
private static final Deque<CCTNode> callStack = new ArrayDeque<>(Collections.singletonList(rootNode));
|
||||
|
||||
static {
|
||||
SwingUtilities.invokeLater(() -> {
|
||||
JFrame frame = new JFrame("Profiler");
|
||||
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
|
||||
model.add(0, "hello");
|
||||
JList<String> list = new JList<>(model);
|
||||
JScrollPane p = new JScrollPane(list);
|
||||
frame.add(p);
|
||||
frame.pack();
|
||||
frame.setVisible(true);
|
||||
});
|
||||
|
||||
Runtime.getRuntime().addShutdownHook(new Thread(() -> {
|
||||
System.out.println("\nCalling Context Tree:");
|
||||
System.out.println(rootNode);
|
||||
}));
|
||||
}
|
||||
|
||||
private static MidiEvent createProgramChangeEvent(int channel, int program) throws InvalidMidiDataException {
|
||||
ShortMessage message = new ShortMessage();
|
||||
message.setMessage(ShortMessage.PROGRAM_CHANGE, channel, program, 0);
|
||||
return new MidiEvent(message, 0);
|
||||
}
|
||||
|
||||
public static void play() throws InterruptedException {
|
||||
final Thread midi = new Thread(() -> {
|
||||
try {
|
||||
Sequencer player = MidiSystem.getSequencer();
|
||||
player.open();
|
||||
|
||||
Sequence seq = new Sequence(Sequence.PPQ, 4);
|
||||
|
||||
Track track = seq.createTrack();
|
||||
|
||||
int channel = 1;
|
||||
|
||||
int pitch = size * 2;
|
||||
pitch = 20 + pitch % 118;
|
||||
|
||||
track.add(createProgramChangeEvent(channel, 54));
|
||||
|
||||
ShortMessage a = new ShortMessage();
|
||||
a.setMessage(ShortMessage.NOTE_ON, channel, pitch, 100);
|
||||
MidiEvent noteOn = new MidiEvent(a, 0);
|
||||
track.add(noteOn);
|
||||
|
||||
ShortMessage b = new ShortMessage();
|
||||
b.setMessage(ShortMessage.NOTE_OFF, channel, pitch, 100);
|
||||
MidiEvent noteOff = new MidiEvent(b, 2);
|
||||
track.add(noteOff);
|
||||
|
||||
player.setSequence(seq);
|
||||
player.start();
|
||||
|
||||
} catch (Exception ex) {
|
||||
ex.printStackTrace();
|
||||
}
|
||||
});
|
||||
|
||||
midi.start();
|
||||
midi.join();
|
||||
private static String indent(int n) {
|
||||
StringBuilder sb = new StringBuilder();
|
||||
for (int i = 0; i < n; i++) {
|
||||
sb.append(" ");
|
||||
}
|
||||
return sb.toString();
|
||||
}
|
||||
|
||||
public static void entry(String clazz, String method, String desc) {
|
||||
size++;
|
||||
model.add(0, clazz + "." + method + desc);
|
||||
log(clazz, method, desc, "entry");
|
||||
final CCTNode parent = callStack.getFirst();
|
||||
|
||||
final Frame frame = new Frame(clazz, method, desc);
|
||||
callStack.push(parent.getOrAddChild(frame));
|
||||
|
||||
// System.out.println("profiler captured: > " + indent(callStack.size()) + callStack.getFirst().getFrame().getName());
|
||||
}
|
||||
|
||||
public static void exit(String clazz, String method, String desc) {
|
||||
size--;
|
||||
model.remove(0);
|
||||
log(clazz, method, desc, "exit");
|
||||
}
|
||||
final Frame exitingFrom = new Frame(clazz, method, desc);
|
||||
final IFrame lastCalled = callStack.isEmpty() ? null : callStack.getFirst().getFrame();
|
||||
|
||||
private static void log(String clazz, String method, String desc, String type) {
|
||||
try {
|
||||
System.err.println("Profiler: " + type + " " + clazz + "." + method + desc);
|
||||
play();
|
||||
|
||||
try {
|
||||
Thread.sleep(50);
|
||||
} catch (InterruptedException ignored) {
|
||||
}
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace(System.err);
|
||||
if (!exitingFrom.equals(lastCalled)) {
|
||||
throw new IllegalStateException("Expecting to exit from " + lastCalled + ", but found " + exitingFrom);
|
||||
}
|
||||
|
||||
// System.out.println("profiler captured: < " + indent(callStack.size()) + callStack.getFirst().getFrame().getName());
|
||||
|
||||
callStack.pop();
|
||||
}
|
||||
}
|
||||
|
|
13
profiler/src/ch/usi/inf/sp/dbi/profiler/RootFrame.java
Normal file
13
profiler/src/ch/usi/inf/sp/dbi/profiler/RootFrame.java
Normal file
|
@ -0,0 +1,13 @@
|
|||
package ch.usi.inf.sp.dbi.profiler;
|
||||
|
||||
public class RootFrame implements IFrame {
|
||||
public static final RootFrame INSTANCE = new RootFrame();
|
||||
|
||||
private RootFrame() {
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getName() {
|
||||
return "root";
|
||||
}
|
||||
}
|
Reference in a new issue