SlideShare ist ein Scribd-Unternehmen logo
1 von 152
Downloaden Sie, um offline zu lesen
Open Source
Java
Debugging
 Tools
              by Matthew McCullough of Ambient Ideas, LLC
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
http://delicious.com/matthew.mccullough/opensource+debugging
Not
Ins tead
jhat                   jstat
                jmap
jps                          jstack
             VisualVM
                  Eclipse
  TPTP                      MAT

TOD              jstatd
Hotspot JVMs
jps process list
What JVM options
did we use when we
 started up the app
       server?
jps
jps -l
     Sh
         ow
              fu
                ll
                     pa
                       ck
                          ag
                            e
                                na
                                  m
                                      e
Sh
             ow


jps -l -v
        Sh        fu
            ow      ll
                         pa
                  JV    ck
                    M      ag
                              e
                      ar
                         gu nam
                           m       e
                             en
                                ts
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
VIDEO JPS
only local?
jps 10.15.25.32
How?
Run jstatd daemon
Allow-all policy
y
                                         lic
                                       Po
                                     ur
                                   Yo
jstatd -J-Djava.security.policy=allowall.pol
grant codebase "file:${java.home}/../lib/tools.jar" {
   permission java.security.AllPermission;
};
grant codebase "file:${java.home}/../lib/tools.jar" {
   permission java.net.SocketPermission
     "<YourDesktopHostnameOrIP>:1099",
     "accept, connect, listen, resolve";
};
let’s start up the
jstatd daemon
VIDEO JSTATD
jps 10.15.25.32
Windows
let’s run JPS from
across the network to a Mac
VIDEO JPS REMOTE
jstat process info
Sh
                        ow
                             ga
                               rb
                                  ag
                                    e

jstat -gcutil <pid>
                                        co
                                          lle
                                             ct
                                               io
                                                 n
es
                                               pl
                                             m
                                          sa
                                        n
                                     ee

                                    ns
                                tw

                                  io
                              tit
                      be
                           pe
                     s
                        re
                    m
jstat -gcutil <pid> 500 999
es
                            lin
                           X
                           y
                       er
                       ev
                     r e
                    ad
                  he
               ow
             Sh


jstat -gcutil -h5 <pid> 500 999
VIDEO JSTAT REMOTE
jstack stack dumps
jstack <pid>
jstack -F <pid>
of
                in
              ck
             lo
            e
         os
        rb
       Ve

jstack -l <pid>
Direct this output to a file with a
tdump extension
Use TDA on VisualVM to analyze it
javap class file disassembler
We added a new
method to a class.
    Is it on the
server-deployed copy
     of the app?
javap classfile
e
         os
        rb
       Ve




javap -v classfile
major version: 48 = Java 1.4
major version: 49 = Java 5
major version: 50 = Java 6
In
                      te
                         rn
                           al
                                ty
                                  pe


javap -s classfile
                                       si
                                         gn
                                            at
                                              ur
                                                es
ds
                      ho
                    et
                   m
                   te
                iva
              Pr
           ow
         Sh




javap -private classfile
Survey
StackOverflow.com
Your favorite
Open Source Debugging Tool?
❸
    VisualVM
❷
    Eclipse
❶       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);
I’ve got the only tool I need
jmap memory maps
jmap histogram
jmap -histo <pid>
jmap -histo:live <pid>
jmap heap dump
jmap -dump:file=myfile.hprof <pid>
java -XX:+HeapDumpOnOutOfMemoryError MyApp
jinfo -flag +HeapDumpOnOutMemoryError <pid>
OutOfMemoryError
Drive in to office!
jhat heap analysis
jhat -J-Xmx512m <yourdump.hprof>
jhat -J-Xmx512m <yourdump.hprof>
jhat -J-Xmx512m <yourdump.hprof>
http://localhost:7000
OQL
select z from java.lang.String z
select z from java.lang.String z where z.count >= 50
http://blogs.sun.com/sundararajan/date/200509
eclipse memory analyzer
          M.A.T.
EclipseMemoryAnalyzer
Purpose
Investigate memory usage.

Useful for
Visualizing memory footprint.
Finding memory leaks.
Querying through (OQL) allocated memory.
Discovering heavy memory allocation sources.
EclipseMemoryAnalyzer
Gotcha
Doesn’t create heap dumps, just analyzes.
Available as a plugin or standalone RCP app.
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[]
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[]
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[]
Load a heap dump in MAT
VIDEO ECLIPSE MAT
Run some OQL on it
VIDEO ECLIPSE MAT
      OQL
btrace
Can you put a
   few debugging
“sysouts” into that
 running production
        app?
BTrace   Tracing
BTrace   Tracing
BTrace    Tracing
Production-time
Operates on deployed code
Uses debugging hooks to re-deploy class files
Runtime injection of tracing statements
BTrace     Tracing

Code
Tracing scripts written in Java.
Limited to a catalog of static methods.
Compiled at design time or tracing time.
Unsafe mode
BTrace     Tracing

Code
Tracing scripts written in Java.
Limited to a catalog of static methods.
Compiled at design time or tracing time.
Unsafe mode
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="/.*/",
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).
)
    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
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();
/**
      * 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);
        }
    }
}
* 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);
        }
    }
}
visualvm
Useful for
‣ Discovering the GC cycles of your app.
‣ Finding the largest memory usage culprits.
‣ Diffing memory snapshots.
‣ Injecting btrace code.
‣ Snapping heapdumps.
Gotcha
Download version 1.2 even if your JDK includes 1.0.
Standalone version always ahead of JVM version.
VisualVM in action
BTrace in action
omniscient debuggers
Luke, you can
   destroy the   bug!
He has   foreseen this.
It is your   destiny.
TOD
(by Guillaume Pothier)
TOD
✴ Eclipse-integrated omniscient debugger
✴ observe all memory changes
✴ execute once, review infinitely
✴ rewind and step through call stacks, loops
✴ Windows-only (DLL)
VIDEO TOD
comprehension tools
Goal:
Comprehend the application
runtime call sequence better.
amida
amida
http://sel.ist.osaka-u.ac.jp/~ishio/amida/
jtracert
jtracert
http://code.google.com/p/jtracert/
Eclipse TPTP
Eclipse TPTP

✴ profile an application’s performance
✴ render call sequence diagrams
✴ almost ready for Mac OS
VIDEO TPTP
decompiling tools
cavaj
JODE
JD-Eclipse
System.out.println()
ancient weapons are no match...
bring a better   weapon to the fight
if a bug
strikes
you
down...
You work the   weekend solving it.
Matthew McCullough
matthewm@ambientideas.com
May the debugging   force be with you.




                              Matthew McCullough
                        matthewm@ambientideas.com
Than ks in advance for
your  complete d evals!
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
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
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/
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/

Weitere ähnliche Inhalte

Mehr von Matthew McCullough

Git Graphs, Hashes, and Compression, Oh My
Git Graphs, Hashes, and Compression, Oh MyGit Graphs, Hashes, and Compression, Oh My
Git Graphs, Hashes, and Compression, Oh MyMatthew McCullough
 
Git and GitHub at the San Francisco JUG
 Git and GitHub at the San Francisco JUG Git and GitHub at the San Francisco JUG
Git and GitHub at the San Francisco JUGMatthew McCullough
 
Migrating from Subversion to Git and GitHub
Migrating from Subversion to Git and GitHubMigrating from Subversion to Git and GitHub
Migrating from Subversion to Git and GitHubMatthew McCullough
 
Build Lifecycle Craftsmanship for the Transylvania JUG
Build Lifecycle Craftsmanship for the Transylvania JUGBuild Lifecycle Craftsmanship for the Transylvania JUG
Build Lifecycle Craftsmanship for the Transylvania JUGMatthew McCullough
 
Git Going for the Transylvania JUG
Git Going for the Transylvania JUGGit Going for the Transylvania JUG
Git Going for the Transylvania JUGMatthew McCullough
 
Transylvania JUG Pre-Meeting Announcements
Transylvania JUG Pre-Meeting AnnouncementsTransylvania JUG Pre-Meeting Announcements
Transylvania JUG Pre-Meeting AnnouncementsMatthew McCullough
 
Game Theory for Software Developers at the Boulder JUG
Game Theory for Software Developers at the Boulder JUGGame Theory for Software Developers at the Boulder JUG
Game Theory for Software Developers at the Boulder JUGMatthew McCullough
 
Cascading Through Hadoop for the Boulder JUG
Cascading Through Hadoop for the Boulder JUGCascading Through Hadoop for the Boulder JUG
Cascading Through Hadoop for the Boulder JUGMatthew McCullough
 

Mehr von Matthew McCullough (20)

Adam Smith Builds an App
Adam Smith Builds an AppAdam Smith Builds an App
Adam Smith Builds an App
 
Git's Filter Branch Command
Git's Filter Branch CommandGit's Filter Branch Command
Git's Filter Branch Command
 
Git Graphs, Hashes, and Compression, Oh My
Git Graphs, Hashes, and Compression, Oh MyGit 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 Git and GitHub at the San Francisco JUG
Git and GitHub at the San Francisco JUG
 
Finding Things in Git
Finding Things in GitFinding Things in Git
Finding Things in Git
 
Git and GitHub for RallyOn
Git and GitHub for RallyOnGit and GitHub for RallyOn
Git and GitHub for RallyOn
 
Migrating from Subversion to Git and GitHub
Migrating from Subversion to Git and GitHubMigrating from Subversion to Git and GitHub
Migrating from Subversion to Git and GitHub
 
Git Notes and GitHub
Git Notes and GitHubGit Notes and GitHub
Git Notes and GitHub
 
Intro to Git and GitHub
Intro to Git and GitHubIntro to Git and GitHub
Intro to Git and GitHub
 
Build Lifecycle Craftsmanship for the Transylvania JUG
Build Lifecycle Craftsmanship for the Transylvania JUGBuild Lifecycle Craftsmanship for the Transylvania JUG
Build Lifecycle Craftsmanship for the Transylvania JUG
 
Git Going for the Transylvania JUG
Git Going for the Transylvania JUGGit Going for the Transylvania JUG
Git Going for the Transylvania JUG
 
Transylvania JUG Pre-Meeting Announcements
Transylvania JUG Pre-Meeting AnnouncementsTransylvania 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 JUGGame 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 JUGCascading Through Hadoop for the Boulder JUG
Cascading Through Hadoop for the Boulder JUG
 
JQuery Mobile
JQuery MobileJQuery Mobile
JQuery Mobile
 
R Data Analysis Software
R Data Analysis SoftwareR Data Analysis Software
R Data Analysis Software
 
Please, Stop Using Git
Please, Stop Using GitPlease, Stop Using Git
Please, Stop Using Git
 
Dr. Strangedev
Dr. StrangedevDr. Strangedev
Dr. Strangedev
 
Jenkins for One
Jenkins for OneJenkins for One
Jenkins for One
 
Lean Fluffy Startups
Lean Fluffy StartupsLean 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-IIFood Chain and Food Web (Ecosystem) EVS, B. Pharmacy 1st Year, Sem-II
Food Chain and Food Web (Ecosystem) EVS, B. Pharmacy 1st Year, Sem-IIShubhangi Sonawane
 
Beyond the EU: DORA and NIS 2 Directive's Global Impact
Beyond the EU: DORA and NIS 2 Directive's Global ImpactBeyond the EU: DORA and NIS 2 Directive's Global Impact
Beyond the EU: DORA and NIS 2 Directive's Global ImpactPECB
 
Activity 01 - Artificial Culture (1).pdf
Activity 01 - Artificial Culture (1).pdfActivity 01 - Artificial Culture (1).pdf
Activity 01 - Artificial Culture (1).pdfciinovamais
 
This PowerPoint helps students to consider the concept of infinity.
This PowerPoint helps students to consider the concept of infinity.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.pdfMicro-Scholarship, What it is, How can it help me.pdf
Micro-Scholarship, What it is, How can it help me.pdfPoh-Sun Goh
 
ICT Role in 21st Century Education & its Challenges.pptx
ICT Role in 21st Century Education & its Challenges.pptxICT Role in 21st Century Education & its Challenges.pptx
ICT Role in 21st Century Education & its Challenges.pptxAreebaZafar22
 
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 DelhiRussian Escort Service in Delhi 11k Hotel Foreigner Russian Call Girls in Delhi
Russian Escort Service in Delhi 11k Hotel Foreigner Russian Call Girls in Delhikauryashika82
 
1029 - Danh muc Sach Giao Khoa 10 . pdf
1029 -  Danh muc Sach Giao Khoa 10 . pdf1029 -  Danh muc Sach Giao Khoa 10 . pdf
1029 - Danh muc Sach Giao Khoa 10 . pdfQucHHunhnh
 
How to Give a Domain for a Field in Odoo 17
How to Give a Domain for a Field in Odoo 17How to Give a Domain for a Field in Odoo 17
How to Give a Domain for a Field in Odoo 17Celine George
 
Key note speaker Neum_Admir Softic_ENG.pdf
Key note speaker Neum_Admir Softic_ENG.pdfKey note speaker Neum_Admir Softic_ENG.pdf
Key note speaker Neum_Admir Softic_ENG.pdfAdmir Softic
 
PROCESS RECORDING FORMAT.docx
PROCESS      RECORDING        FORMAT.docxPROCESS      RECORDING        FORMAT.docx
PROCESS RECORDING FORMAT.docxPoojaSen20
 
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Ữ Â...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 ConsultingGrant Readiness 101 TechSoup and Remy Consulting
Grant Readiness 101 TechSoup and Remy ConsultingTechSoup
 
Making and Justifying Mathematical Decisions.pdf
Making and Justifying Mathematical Decisions.pdfMaking and Justifying Mathematical Decisions.pdf
Making and Justifying Mathematical Decisions.pdfChris Hunter
 
Explore beautiful and ugly buildings. Mathematics helps us create beautiful d...
Explore beautiful and ugly buildings. Mathematics helps us create beautiful d...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  .docxpsychiatric  nursing HISTORY  COLLECTION  .docx
psychiatric nursing HISTORY COLLECTION .docxPoojaSen20
 
Seal of Good Local Governance (SGLG) 2024Final.pptx
Seal of Good Local Governance (SGLG) 2024Final.pptxSeal of Good Local Governance (SGLG) 2024Final.pptx
Seal of Good Local Governance (SGLG) 2024Final.pptxnegromaestrong
 
ICT role in 21st century education and it's challenges.
ICT role in 21st century education and it's challenges.ICT role in 21st century education and it's challenges.
ICT role in 21st century education and it's challenges.MaryamAhmad92
 

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-IIFood 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 ImpactBeyond 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).pdfActivity 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.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.pdfMicro-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.pptxICT 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 DelhiRussian 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 . pdf1029 -  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 17How 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.pptxINDIA 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.pdfKey note speaker Neum_Admir Softic_ENG.pdf
Key note speaker Neum_Admir Softic_ENG.pdf
 
PROCESS RECORDING FORMAT.docx
PROCESS      RECORDING        FORMAT.docxPROCESS      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Ữ Â...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 ConsultingGrant Readiness 101 TechSoup and Remy Consulting
Grant Readiness 101 TechSoup and Remy Consulting
 
Making and Justifying Mathematical Decisions.pdf
Making and Justifying Mathematical Decisions.pdfMaking 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...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  .docxpsychiatric  nursing HISTORY  COLLECTION  .docx
psychiatric nursing HISTORY COLLECTION .docx
 
Seal of Good Local Governance (SGLG) 2024Final.pptx
Seal of Good Local Governance (SGLG) 2024Final.pptxSeal 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.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.pptxAsian American Pacific Islander Month DDSD 2024.pptx
Asian American Pacific Islander Month DDSD 2024.pptx
 

Open Source Debugging for Java 1.4.0