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

Why Programs Fail - Observing Facts

687ac25540fe35fcb5e828f75c4a6079?s=47 Jimmy Moon
July 03, 2007
30

Why Programs Fail - Observing Facts

687ac25540fe35fcb5e828f75c4a6079?s=128

Jimmy Moon

July 03, 2007
Tweet

Transcript

  1. Why Programs Fail - Observing Facts ߊ಴੗ : ޙഅ҃ (rabidus@gmail.com)

    ߊ಴ੌ : 2007֙ 4ਘ 16ੌ
  2. Table of contents Observing Facts Log Interactive Debugging Post-mortem Debugging

    Query Event Visualization
  3. Observing Facts ҳ୓੸ੋ प೯ীࢲ ੌযաח ࢎपٜ(Facts)ܳ ҙ଴ (Observing) оࢸҗ ো৉ਸ

    ా೧ࢲ ঳਷ ௏٘ߧਤ੄ Ѿҗܳ ҙ଴ ҙ଴੄ ਗ஗ рࢼೞ૑ ݈ইঠ ೠ׮. ޖ঺ਸ ঱ઁ ҙ଴ೡ Ѫੋ૑ ঌইঠ ೠ׮ ୓҅੸ਵ۽ ૓೯ೞۄ ҙ଴ ߑߨ Log Interactive Debugging Post-mortem Debugging
  4. Log ೐۽Ӓ۔੉ ࢎपਸ ୹۱ೞח ߑߨ ٣ߡӒ ۽Ӓ, printf٣ߡӦ ױ੼ ૑੷࠙ೠ

    ௏٘ ૑੷࠙ೠ ୹۱ ࣘب ੷ೞ ੗ܐ ࣚप
  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 о߸੸ੋ ࣁ޻ب ೲਊ ޙઁ੼੄ ࢿѺਸ ҳ࠙ ੌҙࢿ ੤ࢎਊೡ ࣻ ੓ח ۽Ӧਸ ࢤࢿ
  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; }
  7. Log Library ۽Ӧ੄ ױ੼ਸ ӓࠂ ಴ળ ഋधࢎਊ ੹ਊ ࠭য ૑ਗ

    ۽Ӓ য়ߡ೻٘ ઴੐ ࠺زӝ ۽Ӓ Windows Service, remote socket ۽Ӓ ۨ߰ ۽Ӓ ২࣌ ૑ਗ ੌҙػ ੋఠಕ੉झ ઙܨ Log4XXX NT Event Log DarkLog
  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
  9. Log4XXX (Con’t)

  10. NT Event Log

  11. DarkView Concept Server Server Server Server Server log aggregater (windows

    service) darkview log data remote
 socket i/o query
  12. DarkView (Con’t)

  13. Aspect पઁ௏٘(ز੘)ܳ ࢸݺ(aspect)ೞח ۽Ӧ (advice)ܳ पઁ ௏٘৬ ܻ࠙ೞৈ ੘ࢿೞৈ ߹ب੄

    ஹ౵ੌ۞(ajc)۽ ૞ ֍য (weaving)૓׮. ۽Ӓо प೯ؼ ੢ࣗ, ਤ஖(point cut)ܳ ݺद ೡ ࣻ ੓׮. पઁ ௏٘ী ৔ೱਸ ޷஖૑ ঋਵݴ, ࢶఖ੸ਵ۽ ࢎਊоמೞ Ҋ ੤ࢎਊ੉ ए਍ ࣛܖ࣌
  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()”); } }
  15. Interactive Debugging Debuggerܳ ࢎਊೞৈ पदрਵ۽ ҙ଴ ੢੼ औѱ द੘ ೡ

    ࣻ ੓׮. ࣗझ ࣻ੿, ஹ౵ੌ੉ ೙ਃহ੉ ߄۽ ҙ଴ оמ ਬোೠ ҙ଴ ࣻ೯઺ ࣻ੿, ੐੄੄ ؘ੉ఠ ҙ଴ оמ ૊п੸ੋ ࣁ࣌ ૊द ೐۽Ӓ۔ ࢚కܳ द೷೧ ࠁҊ ࡅܰѱ Ѿҗܳ ঳חؘ ੸೤ (gdb੄ command) Debugger੄ ઑѤ ೐۽Ӓ۔ਸ प೯ೞҊ ౠ੿ ઑѤೞী ݥ୶ѱ ೧ঠ ೠ׮. ੿૑ػ ೐۽Ӓ۔੄ ࢚కܳ ҙ଴ оמ೧ঠ ೠ׮. ੿૑ػ ೐۽Ӓ۔੄ ࢚కܳ ߸҃ ೡ ࣻ ੓যঠ ೠ׮.
  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)
  17. Visual Studio Debugger Visualization

  18. DEMO DDD Visualization

  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
  20. WinDBG

  21. Dr. Watson

  22. DEMO User Dump

  23. Windows Error Reporting

  24. Windows Debug Tool ౠ੿ ࢚ടীࢲ ਬਊೞѱ ࢎਊೞח ٣ߡӦ ో GFlag

    Heap curruption Performance Monitoring hang(dead lock, cpu 100%)
  25. DEMO GFlag

  26. Performance Monitor

  27. FIN