dynamic analysis and visualizing of data structures in java programs presented by sokhom pheng...

Post on 17-Jan-2016

218 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Dynamic Analysis and Visualizing of Data

Structures in Java Programs

Presented by Sokhom Pheng(Supervisor: Clark Verbrugge)

McGill UniversityFebruary 9th 2005

February 9th 2005 Dynamic Analysis and Visualizing of Data Structures in Java Programs

2

Outline

Motivation Brief overview of *J Requirements for data structure (DS)

analysis Some algorithms for analysis Issues Future works

February 9th 2005 Dynamic Analysis and Visualizing of Data Structures in Java Programs

3

Motivation

Visual understanding of data structure in java programs

Help understand code without looking at source code

Dynamic analysis

February 9th 2005 Dynamic Analysis and Visualizing of Data Structures in Java Programs

4

Brief Overview of *J

Developed by Bruno Dufour in the sable lab

Java Application *J Analyzer

Data Structure Analyzer

*J Agent(JVMPI)

trace file

February 9th 2005 Dynamic Analysis and Visualizing of Data Structures in Java Programs

5

Why isn’t *J enough for DS Analysis? JVMPI doesn’t provide all info

Missing references of objects Missing info on actual values for primitive

Important for accessing arrays Does not track objects

February 9th 2005 Dynamic Analysis and Visualizing of Data Structures in Java Programs

6

Requirements for Data Structures Analysis Need to simulate the whole program

execution Keep track of the JVM stacks

Follow JVM design (VM Spec) Invocation stack for each thread Stack frame for each method

Execution stack to contain operand objects

Keep track of actual values (even of primitives) for array indices

February 9th 2005 Dynamic Analysis and Visualizing of Data Structures in Java Programs

7

Represent Data Structures in Memory Object, method and class has unique ID and

entity (originally implemented in *J) ObjectEntity: ID, name, type, size, … MethodEntity: signature, name, class entity, … ClassEntity: name, number of methods/interfaces,

… Recreate objects and their references to each

other by executing bytecodes found in the trace Eg. putfield obj1 obj2

February 9th 2005 Dynamic Analysis and Visualizing of Data Structures in Java Programs

8

Algorithm for DS Analysis

Goal: identifying data structures Started with identifying “tree”, “dag” and

“cycle” detected by DFS

tree dag cycle

February 9th 2005 Dynamic Analysis and Visualizing of Data Structures in Java Programs

9

Algorithm for DS Analysis (con’d) Other way to identify DS

Combinatorial topology Shape represented by set of equations

Reference Shape Graph (RSG)1

Node represent memory location having similar reference patterns

1 A new Dependence Test Based on Shape Analysis for Pointer-Based Codes, Navarro, Corbera, Asenjo, Tineo, Plata, Zapata, LCPC 2004

February 9th 2005 Dynamic Analysis and Visualizing of Data Structures in Java Programs

10

RSG Example

February 9th 2005 Dynamic Analysis and Visualizing of Data Structures in Java Programs

11

Advantage over Static Analysispublic class BinaryTree { ...

public static void main(String[] args) {...tree.left = tree.right;tree.right = new Node(...);

... } ...}

class Node { ... }

Static Analysis

tree

dagdagdag

February 9th 2005 Dynamic Analysis and Visualizing of Data Structures in Java Programs

12

Advantage over Static Analysis (con’d)From JOlden benchmark: BiSort

After 62 modifications

February 9th 2005 Dynamic Analysis and Visualizing of Data Structures in Java Programs

13

Advantage over Static Analysis (con’d)From JOlden benchmark: BiSort

After 63 modifications

February 9th 2005 Dynamic Analysis and Visualizing of Data Structures in Java Programs

14

Data Gathering Issues

Start up code JVMPI doesn’t start with JVM

Lack of array indices Primitive values from I/O

Native methods

February 9th 2005 Dynamic Analysis and Visualizing of Data Structures in Java Programs

15

Potential Solutions

Look only at application code Ignore arrays for now

February 9th 2005 Dynamic Analysis and Visualizing of Data Structures in Java Programs

16

Analysis Problems

Multiple entry points

tree dag

cycle

obj1 obj2

obj3

obj5

obj4

obj6

Sol’n: Look at all entry points individually

obj7

obj8

February 9th 2005 Dynamic Analysis and Visualizing of Data Structures in Java Programs

17

Analysis Problems (con’d)

Garbage objects Induce multiple entry points Dead nodes not trivially distinguished from live

ones

obj1 obj2

obj3 obj4

Garbage Node

February 9th 2005 Dynamic Analysis and Visualizing of Data Structures in Java Programs

18

Sol’n for Garbage Problem

Root set Exclude garbage objects not yet deleted by

garbage collector

Static fields, live variables and live methods parameters

obj2

obj1 obj1

obj2

obj1

February 9th 2005 Dynamic Analysis and Visualizing of Data Structures in Java Programs

19

Example of Entry Points

public class Foo { static bar = new Bar();

public static void main(String[] args) {Foo foo = new Foo();foo.foo1(new Bar());...

}

public void foo1(Bar b) {Foo f = new Foo();...

}}class Bar { ... }

Root set

{bar}

{bar, foo}

{bar, foo}

{bar, foo, b, f}

{bar}

February 9th 2005 Dynamic Analysis and Visualizing of Data Structures in Java Programs

20

DS Configuration Options

Self loop Why do they exist? Effect: makes everything cyclic

February 9th 2005 Dynamic Analysis and Visualizing of Data Structures in Java Programs

21

DS Configuration Options (con’d) Doubly-connected DS

Effect: makes everything cyclic Not every edge is doubly-connected

February 9th 2005 Dynamic Analysis and Visualizing of Data Structures in Java Programs

22

Gathering Other Useful Info

Encode “age” of modification How a DS evolves over time

Amount of garbage being carried “Drag” effect

February 9th 2005 Dynamic Analysis and Visualizing of Data Structures in Java Programs

23

Drag Effect

From JOlden benchmark: Barnes-Hut

After 58 modifications

February 9th 2005 Dynamic Analysis and Visualizing of Data Structures in Java Programs

24

Legend / Encoding

≤ 1000 byte codes

≤ 100 byte codes

≤ 10 byte codes

≤ 10000 byte codes

≤ 100000 byte codes

≤ 1000000 byte codes

> 1000000 byte codes

Age of node

New node

Cycle

DAG

Tree

obj1 Garbage

February 9th 2005 Dynamic Analysis and Visualizing of Data Structures in Java Programs

25

Example

From JOlden benchmark: Barnes-Hut

After 13 modifications

February 9th 2005 Dynamic Analysis and Visualizing of Data Structures in Java Programs

26

Garbage Option

Option to show garbage objects or not

February 9th 2005 Dynamic Analysis and Visualizing of Data Structures in Java Programs

27

Representing Entry Points

Different shapes and colours for entry point depending on type of DS

February 9th 2005 Dynamic Analysis and Visualizing of Data Structures in Java Programs

28

Drawing Tool

Dot / Graphviz Generates snapshots

February 9th 2005 Dynamic Analysis and Visualizing of Data Structures in Java Programs

29

Drawing Issue

Drawing of one graph has no relation to drawing of the next Dot try to be optimal Jumps all over the place

February 9th 2005 Dynamic Analysis and Visualizing of Data Structures in Java Programs

30

Drawing Issue Example

February 9th 2005 Dynamic Analysis and Visualizing of Data Structures in Java Programs

31

Possible Solutions

Tom Sawyer Software (currently investigating) Incremental drawing

Hack into Dot’s source code Add “inter-frames” between snapshots

February 9th 2005 Dynamic Analysis and Visualizing of Data Structures in Java Programs

32

Small Complete Example

February 9th 2005 Dynamic Analysis and Visualizing of Data Structures in Java Programs

33

Future Works

Deal with arrays and unknown info Draw approximate graph

Handle start up code / native methods Investigate other drawing tools Add other analyses

RSG from LCPC paper Topological approach (set of equations)

Calculate “drags” for garbage objects Analyze more and more complex programs

February 9th 2005 Dynamic Analysis and Visualizing of Data Structures in Java Programs

34

Thank You!

top related