Suche senden
Hochladen
Open Source Debugging for Java 1.4.0
•
9 gefällt mir
•
1,441 views
Matthew McCullough
Folgen
Open Source Debugging for Java given at the Dallas MUG
Weniger lesen
Mehr lesen
Bildung
Technologie
Melden
Teilen
Melden
Teilen
1 von 152
Jetzt herunterladen
Downloaden Sie, um offline zu lesen
Empfohlen
Webinar Test-Driven JavaScript
Webinar Test-Driven JavaScript
Sebastian Springer
ITFT - Java Coding
ITFT - Java Coding
Blossom Sood
Secure Coding for Java - An introduction
Secure Coding for Java - An introduction
Sebastien Gioria
Thinking in C/C++, coding in Java
Thinking in C/C++, coding in Java
anomalizer
20. Object-Oriented Programming Fundamental Principles
20. Object-Oriented Programming Fundamental Principles
Intro C# Book
Deep C
Deep C
Olve Maudal
Using Git and GitHub Effectively at Emerge Interactive
Using Git and GitHub Effectively at Emerge Interactive
Matthew McCullough
All About GitHub Pull Requests
All About GitHub Pull Requests
Matthew McCullough
Empfohlen
Webinar Test-Driven JavaScript
Webinar Test-Driven JavaScript
Sebastian Springer
ITFT - Java Coding
ITFT - Java Coding
Blossom Sood
Secure Coding for Java - An introduction
Secure Coding for Java - An introduction
Sebastien Gioria
Thinking in C/C++, coding in Java
Thinking in C/C++, coding in Java
anomalizer
20. Object-Oriented Programming Fundamental Principles
20. Object-Oriented Programming Fundamental Principles
Intro C# Book
Deep C
Deep C
Olve Maudal
Using Git and GitHub Effectively at Emerge Interactive
Using Git and GitHub Effectively at Emerge Interactive
Matthew McCullough
All About GitHub Pull Requests
All About GitHub Pull Requests
Matthew McCullough
Adam Smith Builds an App
Adam Smith Builds an App
Matthew McCullough
Git's Filter Branch Command
Git's Filter Branch Command
Matthew McCullough
Git Graphs, Hashes, and Compression, Oh My
Git Graphs, Hashes, and Compression, Oh My
Matthew McCullough
Git and GitHub at the San Francisco JUG
Git and GitHub at the San Francisco JUG
Matthew McCullough
Finding Things in Git
Finding Things in Git
Matthew McCullough
Git and GitHub for RallyOn
Git and GitHub for RallyOn
Matthew McCullough
Migrating from Subversion to Git and GitHub
Migrating from Subversion to Git and GitHub
Matthew McCullough
Git Notes and GitHub
Git Notes and GitHub
Matthew McCullough
Intro to Git and GitHub
Intro to Git and GitHub
Matthew McCullough
Build Lifecycle Craftsmanship for the Transylvania JUG
Build Lifecycle Craftsmanship for the Transylvania JUG
Matthew McCullough
Git Going for the Transylvania JUG
Git Going for the Transylvania JUG
Matthew McCullough
Transylvania JUG Pre-Meeting Announcements
Transylvania JUG Pre-Meeting Announcements
Matthew McCullough
Game Theory for Software Developers at the Boulder JUG
Game Theory for Software Developers at the Boulder JUG
Matthew McCullough
Cascading Through Hadoop for the Boulder JUG
Cascading Through Hadoop for the Boulder JUG
Matthew McCullough
JQuery Mobile
JQuery Mobile
Matthew McCullough
R Data Analysis Software
R Data Analysis Software
Matthew McCullough
Please, Stop Using Git
Please, Stop Using Git
Matthew McCullough
Dr. Strangedev
Dr. Strangedev
Matthew McCullough
Jenkins for One
Jenkins for One
Matthew McCullough
Lean Fluffy Startups
Lean Fluffy Startups
Matthew McCullough
Food Chain and Food Web (Ecosystem) EVS, B. Pharmacy 1st Year, Sem-II
Food Chain and Food Web (Ecosystem) EVS, B. Pharmacy 1st Year, Sem-II
Shubhangi Sonawane
Beyond the EU: DORA and NIS 2 Directive's Global Impact
Beyond the EU: DORA and NIS 2 Directive's Global Impact
PECB
Weitere ähnliche Inhalte
Mehr von Matthew McCullough
Adam Smith Builds an App
Adam Smith Builds an App
Matthew McCullough
Git's Filter Branch Command
Git's Filter Branch Command
Matthew McCullough
Git Graphs, Hashes, and Compression, Oh My
Git Graphs, Hashes, and Compression, Oh My
Matthew McCullough
Git and GitHub at the San Francisco JUG
Git and GitHub at the San Francisco JUG
Matthew McCullough
Finding Things in Git
Finding Things in Git
Matthew McCullough
Git and GitHub for RallyOn
Git and GitHub for RallyOn
Matthew McCullough
Migrating from Subversion to Git and GitHub
Migrating from Subversion to Git and GitHub
Matthew McCullough
Git Notes and GitHub
Git Notes and GitHub
Matthew McCullough
Intro to Git and GitHub
Intro to Git and GitHub
Matthew McCullough
Build Lifecycle Craftsmanship for the Transylvania JUG
Build Lifecycle Craftsmanship for the Transylvania JUG
Matthew McCullough
Git Going for the Transylvania JUG
Git Going for the Transylvania JUG
Matthew McCullough
Transylvania JUG Pre-Meeting Announcements
Transylvania JUG Pre-Meeting Announcements
Matthew McCullough
Game Theory for Software Developers at the Boulder JUG
Game Theory for Software Developers at the Boulder JUG
Matthew McCullough
Cascading Through Hadoop for the Boulder JUG
Cascading Through Hadoop for the Boulder JUG
Matthew McCullough
JQuery Mobile
JQuery Mobile
Matthew McCullough
R Data Analysis Software
R Data Analysis Software
Matthew McCullough
Please, Stop Using Git
Please, Stop Using Git
Matthew McCullough
Dr. Strangedev
Dr. Strangedev
Matthew McCullough
Jenkins for One
Jenkins for One
Matthew McCullough
Lean Fluffy Startups
Lean Fluffy Startups
Matthew McCullough
Mehr von Matthew McCullough
(20)
Adam Smith Builds an App
Adam Smith Builds an App
Git's Filter Branch Command
Git's Filter Branch Command
Git Graphs, Hashes, and Compression, Oh My
Git Graphs, Hashes, and Compression, Oh My
Git and GitHub at the San Francisco JUG
Git and GitHub at the San Francisco JUG
Finding Things in Git
Finding Things in Git
Git and GitHub for RallyOn
Git and GitHub for RallyOn
Migrating from Subversion to Git and GitHub
Migrating from Subversion to Git and GitHub
Git Notes and GitHub
Git Notes and GitHub
Intro to Git and GitHub
Intro to Git and GitHub
Build Lifecycle Craftsmanship for the Transylvania JUG
Build Lifecycle Craftsmanship for the Transylvania JUG
Git Going for the Transylvania JUG
Git Going for the Transylvania JUG
Transylvania JUG Pre-Meeting Announcements
Transylvania JUG Pre-Meeting Announcements
Game Theory for Software Developers at the Boulder JUG
Game Theory for Software Developers at the Boulder JUG
Cascading Through Hadoop for the Boulder JUG
Cascading Through Hadoop for the Boulder JUG
JQuery Mobile
JQuery Mobile
R Data Analysis Software
R Data Analysis Software
Please, Stop Using Git
Please, Stop Using Git
Dr. Strangedev
Dr. Strangedev
Jenkins for One
Jenkins for One
Lean Fluffy Startups
Lean Fluffy Startups
Kürzlich hochgeladen
Food Chain and Food Web (Ecosystem) EVS, B. Pharmacy 1st Year, Sem-II
Food Chain and Food Web (Ecosystem) EVS, B. Pharmacy 1st Year, Sem-II
Shubhangi Sonawane
Beyond the EU: DORA and NIS 2 Directive's Global Impact
Beyond the EU: DORA and NIS 2 Directive's Global Impact
PECB
Activity 01 - Artificial Culture (1).pdf
Activity 01 - Artificial Culture (1).pdf
ciinovamais
This PowerPoint helps students to consider the concept of infinity.
This PowerPoint helps students to consider the concept of infinity.
christianmathematics
Micro-Scholarship, What it is, How can it help me.pdf
Micro-Scholarship, What it is, How can it help me.pdf
Poh-Sun Goh
ICT Role in 21st Century Education & its Challenges.pptx
ICT Role in 21st Century Education & its Challenges.pptx
AreebaZafar22
Russian Escort Service in Delhi 11k Hotel Foreigner Russian Call Girls in Delhi
Russian Escort Service in Delhi 11k Hotel Foreigner Russian Call Girls in Delhi
kauryashika82
1029 - Danh muc Sach Giao Khoa 10 . pdf
1029 - Danh muc Sach Giao Khoa 10 . pdf
QucHHunhnh
How to Give a Domain for a Field in Odoo 17
How to Give a Domain for a Field in Odoo 17
Celine George
INDIA QUIZ 2024 RLAC DELHI UNIVERSITY.pptx
INDIA QUIZ 2024 RLAC DELHI UNIVERSITY.pptx
RAM LAL ANAND COLLEGE, DELHI UNIVERSITY.
Key note speaker Neum_Admir Softic_ENG.pdf
Key note speaker Neum_Admir Softic_ENG.pdf
Admir Softic
PROCESS RECORDING FORMAT.docx
PROCESS RECORDING FORMAT.docx
PoojaSen20
TỔNG ÔN TẬP THI VÀO LỚP 10 MÔN TIẾNG ANH NĂM HỌC 2023 - 2024 CÓ ĐÁP ÁN (NGỮ Â...
TỔNG ÔN TẬP THI VÀO LỚP 10 MÔN TIẾNG ANH NĂM HỌC 2023 - 2024 CÓ ĐÁP ÁN (NGỮ Â...
Nguyen Thanh Tu Collection
Grant Readiness 101 TechSoup and Remy Consulting
Grant Readiness 101 TechSoup and Remy Consulting
TechSoup
Making and Justifying Mathematical Decisions.pdf
Making and Justifying Mathematical Decisions.pdf
Chris Hunter
Explore beautiful and ugly buildings. Mathematics helps us create beautiful d...
Explore beautiful and ugly buildings. Mathematics helps us create beautiful d...
christianmathematics
psychiatric nursing HISTORY COLLECTION .docx
psychiatric nursing HISTORY COLLECTION .docx
PoojaSen20
Seal of Good Local Governance (SGLG) 2024Final.pptx
Seal of Good Local Governance (SGLG) 2024Final.pptx
negromaestrong
ICT role in 21st century education and it's challenges.
ICT role in 21st century education and it's challenges.
MaryamAhmad92
Asian American Pacific Islander Month DDSD 2024.pptx
Asian American Pacific Islander Month DDSD 2024.pptx
David Douglas School District
Kürzlich hochgeladen
(20)
Food Chain and Food Web (Ecosystem) EVS, B. Pharmacy 1st Year, Sem-II
Food Chain and Food Web (Ecosystem) EVS, B. Pharmacy 1st Year, Sem-II
Beyond the EU: DORA and NIS 2 Directive's Global Impact
Beyond the EU: DORA and NIS 2 Directive's Global Impact
Activity 01 - Artificial Culture (1).pdf
Activity 01 - Artificial Culture (1).pdf
This PowerPoint helps students to consider the concept of infinity.
This PowerPoint helps students to consider the concept of infinity.
Micro-Scholarship, What it is, How can it help me.pdf
Micro-Scholarship, What it is, How can it help me.pdf
ICT Role in 21st Century Education & its Challenges.pptx
ICT Role in 21st Century Education & its Challenges.pptx
Russian Escort Service in Delhi 11k Hotel Foreigner Russian Call Girls in Delhi
Russian Escort Service in Delhi 11k Hotel Foreigner Russian Call Girls in Delhi
1029 - Danh muc Sach Giao Khoa 10 . pdf
1029 - Danh muc Sach Giao Khoa 10 . pdf
How to Give a Domain for a Field in Odoo 17
How to Give a Domain for a Field in Odoo 17
INDIA QUIZ 2024 RLAC DELHI UNIVERSITY.pptx
INDIA QUIZ 2024 RLAC DELHI UNIVERSITY.pptx
Key note speaker Neum_Admir Softic_ENG.pdf
Key note speaker Neum_Admir Softic_ENG.pdf
PROCESS RECORDING FORMAT.docx
PROCESS RECORDING FORMAT.docx
TỔNG ÔN TẬP THI VÀO LỚP 10 MÔN TIẾNG ANH NĂM HỌC 2023 - 2024 CÓ ĐÁP ÁN (NGỮ Â...
TỔNG ÔN TẬP THI VÀO LỚP 10 MÔN TIẾNG ANH NĂM HỌC 2023 - 2024 CÓ ĐÁP ÁN (NGỮ Â...
Grant Readiness 101 TechSoup and Remy Consulting
Grant Readiness 101 TechSoup and Remy Consulting
Making and Justifying Mathematical Decisions.pdf
Making and Justifying Mathematical Decisions.pdf
Explore beautiful and ugly buildings. Mathematics helps us create beautiful d...
Explore beautiful and ugly buildings. Mathematics helps us create beautiful d...
psychiatric nursing HISTORY COLLECTION .docx
psychiatric nursing HISTORY COLLECTION .docx
Seal of Good Local Governance (SGLG) 2024Final.pptx
Seal of Good Local Governance (SGLG) 2024Final.pptx
ICT role in 21st century education and it's challenges.
ICT role in 21st century education and it's challenges.
Asian American Pacific Islander Month DDSD 2024.pptx
Asian American Pacific Islander Month DDSD 2024.pptx
Open Source Debugging for Java 1.4.0
1.
Open Source Java Debugging Tools
by Matthew McCullough of Ambient Ideas, LLC
2.
Code Examples http://github.com/matthewmccullough Twitter
@matthewmccull Email matthewm@ambientideas.com Blog http://www.ambientideas.com/blog sidebar has my social networking profile links
3.
http://delicious.com/matthew.mccullough/opensource+debugging
4.
Not
5.
Ins tead
6.
7.
jhat
jstat jmap jps jstack VisualVM Eclipse TPTP MAT TOD jstatd
8.
Hotspot JVMs
9.
jps process list
10.
What JVM options did
we use when we started up the app server?
11.
jps
12.
jps -l
Sh ow fu ll pa ck ag e na m e
13.
Sh
ow jps -l -v Sh fu ow ll pa JV ck M ag e ar gu nam m e en ts
14.
Sh
ow Sh fu ow ll pa JV ck M ag jps -l -v -m e Sh ar ow gu nam m e m en ts ain () ar gu m en ts
15.
VIDEO JPS
16.
only local?
17.
jps 10.15.25.32
18.
How?
19.
Run jstatd daemon
20.
Allow-all policy
21.
y
lic Po ur Yo jstatd -J-Djava.security.policy=allowall.pol
22.
grant codebase "file:${java.home}/../lib/tools.jar"
{ permission java.security.AllPermission; };
23.
grant codebase "file:${java.home}/../lib/tools.jar"
{ permission java.net.SocketPermission "<YourDesktopHostnameOrIP>:1099", "accept, connect, listen, resolve"; };
24.
let’s start up
the jstatd daemon
25.
VIDEO JSTATD
26.
jps 10.15.25.32
27.
Windows let’s run JPS
from across the network to a Mac
28.
VIDEO JPS REMOTE
29.
jstat process info
30.
Sh
ow ga rb ag e jstat -gcutil <pid> co lle ct io n
31.
32.
es
pl m sa n ee ns tw io tit be pe s re m jstat -gcutil <pid> 500 999
33.
es
lin X y er ev r e ad he ow Sh jstat -gcutil -h5 <pid> 500 999
34.
VIDEO JSTAT REMOTE
35.
jstack stack dumps
36.
jstack <pid>
37.
38.
jstack -F <pid>
39.
of
in ck lo e os rb Ve jstack -l <pid>
40.
41.
Direct this output
to a file with a tdump extension Use TDA on VisualVM to analyze it
42.
javap class file
disassembler
43.
We added a
new method to a class. Is it on the server-deployed copy of the app?
44.
javap classfile
45.
46.
e
os rb Ve javap -v classfile
47.
48.
major version: 48
= Java 1.4 major version: 49 = Java 5 major version: 50 = Java 6
49.
In
te rn al ty pe javap -s classfile si gn at ur es
50.
51.
ds
ho et m te iva Pr ow Sh javap -private classfile
52.
53.
Survey
54.
StackOverflow.com
55.
Your favorite Open Source
Debugging Tool?
56.
❸
VisualVM
57.
❷
Eclipse
58.
❶
System.out.println(brokenobj) System.out.println(broke System.out.println(brokenobj); nobj) System.out.println(brokenobj); System.out.p rintln(brokenobj); System.out.pr intln(brokenobj); System.out.println(brokenobj); System.out.println(brokenobj); System.out.println(brokenobj); System.out.println(brokenobj); ystem.out.println(broken obj); System.out.println(brokenob System.out.println(brokenobj); System.out.p rintln(brokenobj) System.out.println(brokenobj);
59.
I’ve got the
only tool I need
60.
61.
62.
jmap memory maps
63.
jmap histogram
64.
jmap -histo <pid>
65.
66.
jmap -histo:live <pid>
67.
jmap heap dump
68.
jmap -dump:file=myfile.hprof <pid>
69.
70.
java -XX:+HeapDumpOnOutOfMemoryError MyApp
71.
jinfo -flag +HeapDumpOnOutMemoryError
<pid>
72.
OutOfMemoryError Drive in to
office!
73.
jhat heap analysis
74.
jhat -J-Xmx512m <yourdump.hprof>
75.
jhat -J-Xmx512m <yourdump.hprof>
76.
jhat -J-Xmx512m <yourdump.hprof>
77.
78.
http://localhost:7000
79.
80.
OQL
81.
82.
select z from
java.lang.String z
83.
select z from
java.lang.String z where z.count >= 50
84.
85.
http://blogs.sun.com/sundararajan/date/200509
86.
87.
eclipse memory analyzer
M.A.T.
88.
EclipseMemoryAnalyzer Purpose Investigate memory usage. Useful
for Visualizing memory footprint. Finding memory leaks. Querying through (OQL) allocated memory. Discovering heavy memory allocation sources.
89.
EclipseMemoryAnalyzer Gotcha Doesn’t create heap
dumps, just analyzes. Available as a plugin or standalone RCP app.
90.
java.util.HashMap java.lang.String
java.lang.String java.lang.String char[] char[] char[] char[] char[] char[] char[] char[] char[] char[] char[] char[] char[] char[] char[]
91.
Shallow Heap
java.util.HashMap java.lang.String java.lang.String java.lang.String char[] char[] char[] char[] char[] char[] char[] char[] char[] char[] char[] char[] char[] char[] char[]
92.
Retained Heap
java.util.HashMap java.lang.String java.lang.String java.lang.String char[] char[] char[] char[] char[] char[] char[] char[] char[] char[] char[] char[] char[] char[] char[]
93.
Load a heap
dump in MAT
94.
VIDEO ECLIPSE MAT
95.
Run some OQL
on it
96.
VIDEO ECLIPSE MAT
OQL
97.
btrace
98.
99.
Can you put
a few debugging “sysouts” into that running production app?
100.
BTrace
Tracing
101.
BTrace
Tracing
102.
BTrace
Tracing Production-time Operates on deployed code Uses debugging hooks to re-deploy class files Runtime injection of tracing statements
103.
BTrace
Tracing Code Tracing scripts written in Java. Limited to a catalog of static methods. Compiled at design time or tracing time. Unsafe mode
104.
BTrace
Tracing Code Tracing scripts written in Java. Limited to a catalog of static methods. Compiled at design time or tracing time. Unsafe mode
105.
import
com.sun.btrace.annotations.*; import static com.sun.btrace.BTraceUtils.*; import com.sun.btrace.AnyType; import java.lang.management.MemoryUsage; import java.util.concurrent.atomic.AtomicInteger; import java.util.Map; @BTrace public class TraceAllMethodCalls { /** * METHOD CALL TRACEPOINT. */ @OnMethod( clazz="com.ambientideas.HelloWorldJava", method="print", location=@Location(value=Kind.CALL, clazz="/.*/", method="/.*/") ) public static void m(AnyType[] args) { //System.out.println("Hello"); println(strcat("****** WE'VE ENTERED A METHOD ON CLASS: ", name(probeClass ()))); println(strcat("****** WE'VE ENTERED METHOD: ", probeMethod())); } @OnMethod( clazz="/.*/",
106.
import java.lang.management.MemoryUsage; import java.util.concurrent.atomic.AtomicInteger; import
java.util.Map; @BTrace public class TraceAllMethodCalls { /** * METHOD CALL TRACEPOINT. */ @OnMethod( clazz="com.ambientideas.HelloWorldJava", method="print", location=@Location(value=Kind.CALL, clazz="/.*/", method="/.*/") ) public static void m(AnyType[] args) { //System.out.println("Hello"); println(strcat("****** WE'VE ENTERED A METHOD ON CLASS: ", name(probeClass ()))); println(strcat("****** WE'VE ENTERED METHOD: ", probeMethod())); } @OnMethod( clazz="/.*/", method="println" ) public static void m2(AnyType[] args) { println(strcat("****** WE'VE ENTERED A METHOD ON CLASS: ", name(probeClass ()))); println(strcat("****** WE'VE ENTERED METHOD: ", probeMethod())); } /** * ONEXIT TRACEPOINT. CALLED WHEN A BTRACE METHOD CALLS EXIT(INT).
107.
)
public static void m(AnyType[] args) { //System.out.println("Hello"); println(strcat("****** WE'VE ENTERED A METHOD ON CLASS: ", name(probeClass ()))); println(strcat("****** WE'VE ENTERED METHOD: ", probeMethod())); } @OnMethod( clazz="/.*/", method="println" ) public static void m2(AnyType[] args) { println(strcat("****** WE'VE ENTERED A METHOD ON CLASS: ", name(probeClass ()))); println(strcat("****** WE'VE ENTERED METHOD: ", probeMethod())); } /** * ONEXIT TRACEPOINT. CALLED WHEN A BTRACE METHOD CALLS EXIT(INT). */ @OnExit public static void onexit(int code) { println("****** THE BTRACE PROGRAM IS EXITING."); } /** * LOW MEMORY TRACE POINT. */ @OnLowMemory( pool = "Tenured Gen", threshold=58720250
108.
public static void
m2(AnyType[] args) { println(strcat("****** WE'VE ENTERED A METHOD ON CLASS: ", name(probeClass ()))); println(strcat("****** WE'VE ENTERED METHOD: ", probeMethod())); } /** * ONEXIT TRACEPOINT. CALLED WHEN A BTRACE METHOD CALLS EXIT(INT). */ @OnExit public static void onexit(int code) { println("****** THE BTRACE PROGRAM IS EXITING."); } /** * LOW MEMORY TRACE POINT. */ @OnLowMemory( pool = "Tenured Gen", threshold=58720250 ) public static void onLowMem(MemoryUsage mu) { println("******"); println(mu); } /** * MEMORY HISTOGRAM TRACE POINT. */ private static Map<String, AtomicInteger> histo = newHashMap();
109.
/**
* ONEXIT TRACEPOINT. CALLED WHEN A BTRACE METHOD CALLS EXIT(INT). */ @OnExit public static void onexit(int code) { println("****** THE BTRACE PROGRAM IS EXITING."); } /** * LOW MEMORY TRACE POINT. */ @OnLowMemory( pool = "Tenured Gen", threshold=58720250 ) public static void onLowMem(MemoryUsage mu) { println("******"); println(mu); } /** * MEMORY HISTOGRAM TRACE POINT. */ private static Map<String, AtomicInteger> histo = newHashMap(); @OnTimer(4000) public static void print() { if (size(histo) != 0) { printNumberMap(strcat("******", "Component Histogram"), histo); } } }
110.
* LOW MEMORY
TRACE POINT. */ @OnLowMemory( pool = "Tenured Gen", threshold=58720250 ) public static void onLowMem(MemoryUsage mu) { println("******"); println(mu); } /** * MEMORY HISTOGRAM TRACE POINT. */ private static Map<String, AtomicInteger> histo = newHashMap(); @OnTimer(4000) public static void print() { if (size(histo) != 0) { printNumberMap(strcat("******", "Component Histogram"), histo); } } }
111.
112.
visualvm
113.
114.
Useful for ‣ Discovering
the GC cycles of your app. ‣ Finding the largest memory usage culprits. ‣ Diffing memory snapshots. ‣ Injecting btrace code. ‣ Snapping heapdumps.
115.
Gotcha Download version 1.2
even if your JDK includes 1.0. Standalone version always ahead of JVM version.
116.
VisualVM in action
117.
BTrace in action
118.
omniscient debuggers
119.
120.
Luke, you can
destroy the bug! He has foreseen this. It is your destiny.
121.
TOD (by Guillaume Pothier)
122.
123.
TOD ✴ Eclipse-integrated omniscient
debugger ✴ observe all memory changes ✴ execute once, review infinitely ✴ rewind and step through call stacks, loops ✴ Windows-only (DLL)
124.
VIDEO TOD
125.
comprehension tools
126.
Goal: Comprehend the application runtime
call sequence better.
127.
amida
128.
amida http://sel.ist.osaka-u.ac.jp/~ishio/amida/
129.
jtracert
130.
jtracert http://code.google.com/p/jtracert/
131.
Eclipse TPTP
132.
Eclipse TPTP ✴ profile
an application’s performance ✴ render call sequence diagrams ✴ almost ready for Mac OS
133.
VIDEO TPTP
134.
decompiling tools
135.
cavaj
136.
JODE
137.
JD-Eclipse
138.
139.
140.
141.
System.out.println()
142.
ancient weapons are
no match...
143.
bring a better
weapon to the fight
144.
if a bug strikes you down...
145.
You work the
weekend solving it.
146.
Matthew McCullough matthewm@ambientideas.com
147.
May the debugging
force be with you. Matthew McCullough matthewm@ambientideas.com
148.
Than ks in
advance for your complete d evals!
149.
Code Examples http://github.com/matthewmccullough Twitter
@matthewmccull Email matthewm@ambientideas.com Blog http://www.ambientideas.com/blog sidebar has my social networking profile links
150.
Resources Eclipse Memory Analyzer http://www.eclipse.org/mat/ VisualVM https://visualvm.dev.java.net/ GCHisto https://gchisto.dev.java.net/ BTrace https://btrace.dev.java.net/ DTrace,
XRay, Instruments http://en.wikipedia.org/wiki/DTrace
151.
Resources TOD http://pleiad.cl/tod/ JTracert http://code.google.com/p/jtracert/ Amida http://sel.ist.osaka-u.ac.jp/~ishio/amida/ TPTP http://www.eclipse.org/tptp/ JD-Eclipse http://java.decompiler.free.fr/
152.
Image Credits ‣
http://www.ambientideasphotography.com ‣ http://upload.wikimedia.org/wikipedia/commons/a/a4/ BernardMadoff.jpg ‣ http://flickr.com/photos/triller/2226679393/ ‣ http://flickr.com/photos/ektogamat/2687444500/ ‣ http://flickr.com/photos/bfionline/2380398799/ ‣ http://flickr.com/photos/symphoney/76513801/ ‣ http://flickr.com/photos/foxypar4/2124673642/ ‣ http://flickr.com/photos/morberg/3146874095/ ‣ http://flickr.com/photos/triller/2226679393/
Jetzt herunterladen