Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Why Programs Fail - Observing Facts

Jimmy Moon
July 03, 2007
53

Why Programs Fail - Observing Facts

Jimmy Moon

July 03, 2007
Tweet

Transcript

  1. Why Programs Fail - Observing Facts
    ߊ಴੗ : ޙഅ҃ ([email protected])
    ߊ಴ੌ : 2007֙ 4ਘ 16ੌ

    View Slide

  2. Table of contents
    Observing Facts
    Log
    Interactive Debugging
    Post-mortem Debugging
    Query Event
    Visualization

    View Slide

  3. Observing Facts
    ҳ୓੸ੋ प೯ীࢲ ੌযաח ࢎपٜ(Facts)ܳ ҙ଴
    (Observing)
    оࢸҗ ো৉ਸ ా೧ࢲ ঳਷ ௏٘ߧਤ੄ Ѿҗܳ ҙ଴
    ҙ଴੄ ਗ஗
    рࢼೞ૑ ݈ইঠ ೠ׮.
    ޖ঺ਸ ঱ઁ ҙ଴ೡ Ѫੋ૑ ঌইঠ ೠ׮
    ୓҅੸ਵ۽ ૓೯ೞۄ
    ҙ଴ ߑߨ
    Log
    Interactive Debugging
    Post-mortem Debugging

    View Slide

  4. Log
    ೐۽Ӓ۔੉ ࢎपਸ ୹۱ೞח ߑߨ
    ٣ߡӒ ۽Ӓ, printf٣ߡӦ
    ױ੼
    ૑੷࠙ೠ ௏٘
    ૑੷࠙ೠ ୹۱
    ࣘب ੷ೞ
    ੗ܐ ࣚप

    View Slide

  5. Log (Con’t)
    ੹ਊ ۽Ӓ ӝߨ
    ಴ળ ഋधਸ ࢎਊ
    ݫఋؘ੉ఠ
    ੹ਊ ࠭য ࢎਊ
    ௏٘ਤ஖ (౵ੌݺ, ௏٘ۄੋ), ݽٕݺ, दр ੉߮౟ (WARNING, DEBUG, TRACE,
    FATAL)
    ৘ઁ
    “2007-04-02 20:24:13,509 [main] DEBUG TestLogging – Start of main()”
    2007-04-02|02:24:13|509|main|DEBUG|TestLogging – Start of main()
    ۽Ӧਸ ࢶఖ оמೞѱ ݅ٚ׮
    C/CPP੄ ۽Ӧ ݒ௼۽
    Aspect
    о߸੸ੋ ࣁ޻ب ೲਊ
    ޙઁ੼੄ ࢿѺਸ ҳ࠙
    ੌҙࢿ
    ੤ࢎਊೡ ࣻ ੓ח ۽Ӧਸ ࢤࢿ

    View Slide

  6. C/CPP Macro Log
    int _tmain(int argc, _TCHAR* argv[])
    {
    logFunc = (LOG_OUTPUT_FUNC) printf;
    int size = 10;
    SetPrintableModule(LOG_MODULE_UI, 1);
    LOG_DEBUG(LOG_MODULE_UI, ("size = %d", size));
    return 1;
    }

    View Slide

  7. Log Library
    ۽Ӧ੄ ױ੼ਸ ӓࠂ
    ಴ળ ഋधࢎਊ
    ੹ਊ ࠭য ૑ਗ
    ۽Ӓ য়ߡ೻٘ ઴੐
    ࠺زӝ ۽Ӓ
    Windows Service, remote socket
    ۽Ӓ ۨ߰
    ۽Ӓ ২࣌ ૑ਗ
    ੌҙػ ੋఠಕ੉झ
    ઙܨ
    Log4XXX
    NT Event Log
    DarkLog

    View Slide

  8. Log4XXX
    Apache Logging Service
    ׮নೠ ঱য, ജ҃ ૑ਗ
    CPP, JAVA, .NET, Peal, PHP, PLSQL, JDK 1.4’s util.logging.framwork
    ౠ૚
    Logger hierarchy
    com.fooܳ ࢚ࣘ߉਷ com.foo.Bar
    log4cxx::LoggerPtr logger(log4cxx::Logger::getLogger("com.foo"));
    log4cxx::LoggerPtr barlogger(Logger::getLogger(("com.foo.Bar"));
    Log Level
    Appender
    console, file, gui component, remote socket, NT event log, syslog
    Asynchronous log
    Layout
    Environment File
    INI, XML
    ੹ਊ࠭য
    ChainSaw
    TraceTool 8

    View Slide

  9. Log4XXX (Con’t)

    View Slide

  10. NT Event Log

    View Slide

  11. DarkView Concept
    Server
    Server
    Server
    Server
    Server
    log aggregater
    (windows service)
    darkview
    log data
    remote

    socket
    i/o
    query

    View Slide

  12. DarkView (Con’t)

    View Slide

  13. Aspect
    पઁ௏٘(ز੘)ܳ ࢸݺ(aspect)ೞח ۽Ӧ (advice)ܳ पઁ
    ௏٘৬ ܻ࠙ೞৈ ੘ࢿೞৈ ߹ب੄ ஹ౵ੌ۞(ajc)۽ ૞ ֍য
    (weaving)૓׮.
    ۽Ӓо प೯ؼ ੢ࣗ, ਤ஖(point cut)ܳ ݺद ೡ ࣻ ੓׮.
    पઁ ௏٘ী ৔ೱਸ ޷஖૑ ঋਵݴ, ࢶఖ੸ਵ۽ ࢎਊоמೞ
    Ҋ ੤ࢎਊ੉ ए਍ ࣛܖ࣌

    View Slide

  14. Aspect (Con’t)
    // Shop.java
    class Article {
    public void Buy() {// code}
    }
    // LogBuy.aj
    public aspect LogBuy {
    pointcut buyMethod() : call(public void Article.buy());
    before() : buyMethod() {
    System.out.println(“Entering Article.buy()”);}
    after() : buyMethod() {
    System.out.println(“Leaving Article.buy()”);}
    }
    // compile
    $ajc LogBuy.aj Shop.java
    // Pseudocode
    class Article {
    public void Buy()
    {
    System.out.println((“Entering Article.buy()”);
    // Code();
    System.out.println((“Leaving Article.buy()”);
    }
    }

    View Slide

  15. Interactive Debugging
    Debuggerܳ ࢎਊೞৈ पदрਵ۽ ҙ଴
    ੢੼
    औѱ द੘ ೡ ࣻ ੓׮.
    ࣗझ ࣻ੿, ஹ౵ੌ੉ ೙ਃহ੉ ߄۽ ҙ଴ оמ
    ਬোೠ ҙ଴
    ࣻ೯઺ ࣻ੿, ੐੄੄ ؘ੉ఠ ҙ଴ оמ
    ૊п੸ੋ ࣁ࣌
    ૊द ೐۽Ӓ۔ ࢚కܳ द೷೧ ࠁҊ ࡅܰѱ Ѿҗܳ ঳חؘ ੸೤ (gdb੄ command)
    Debugger੄ ઑѤ
    ೐۽Ӓ۔ਸ प೯ೞҊ ౠ੿ ઑѤೞী ݥ୶ѱ ೧ঠ ೠ׮.
    ੿૑ػ ೐۽Ӓ۔੄ ࢚కܳ ҙ଴ оמ೧ঠ ೠ׮.
    ੿૑ػ ೐۽Ӓ۔੄ ࢚కܳ ߸҃ ೡ ࣻ ੓যঠ ೠ׮.

    View Slide

  16. Debugger
    IDE ӝ߈ Debugger
    Visual Studio, Eclipse, Ӓ৻ ׮ࣻ
    ੹ޙ Debugger
    WinDBG, gdb, Ӓ৻ ׮ࣻ
    Deugger ӝמ
    break(breakpoint) and run, watch (watch point), modify variable
    value, calltrace
    enc (edit and continue)

    View Slide

  17. Visual Studio Debugger Visualization

    View Slide

  18. DEMO DDD Visualization

    View Slide

  19. Post-mortem Debugging
    Crashٸ੄ ೐۽Ӓ۔੄ ࢚కܳ ౵ੌ۽ ؒ೐ܳ Debuggerо ׮द ੍য
    Crash࢚కੌ ٸ੄ ೐۽Ӓ۔ ࢚కܳ ઑࢎ
    Dumper
    WinDBG
    UserDump
    Dr. Watson
    Error Reporting
    Windows Dump API
    Windows Visual Studio .NET
    Dump Debugger
    WinDBG
    Windows Visual Studio
    gdb

    View Slide

  20. WinDBG

    View Slide

  21. Dr. Watson

    View Slide

  22. DEMO User Dump

    View Slide

  23. Windows Error Reporting

    View Slide

  24. Windows Debug Tool
    ౠ੿ ࢚ടীࢲ ਬਊೞѱ ࢎਊೞח ٣ߡӦ ో
    GFlag
    Heap curruption
    Performance Monitoring
    hang(dead lock, cpu 100%)

    View Slide

  25. DEMO GFlag

    View Slide

  26. Performance Monitor

    View Slide

  27. FIN

    View Slide