Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Speaker Deck
PRO
Sign in
Sign up for free
Why Programs Fail - Observing Facts
Jimmy Moon
July 03, 2007
0
44
Why Programs Fail - Observing Facts
Jimmy Moon
July 03, 2007
Tweet
Share
More Decks by Jimmy Moon
See All by Jimmy Moon
Micro-Saas for developer who want a new
ragingwind
0
15
How to use The Fourth Language
ragingwind
0
83
Please Use The Fourth Language - WebAssembly
ragingwind
0
61
Head topics in Javascript, 2020
ragingwind
1
570
Recap Modern WebAssembly in CDS 2019
ragingwind
0
220
Today headlines in Javascript, 2019
ragingwind
0
430
Today, The Actions in Javascript
ragingwind
2
580
PWA Updates in Chrome 68
ragingwind
0
130
Learning Next.js in Minutes
ragingwind
0
69
Featured
See All Featured
Building Your Own Lightsaber
phodgson
95
4.7k
Building Better People: How to give real-time feedback that sticks.
wjessup
344
17k
Clear Off the Table
cherdarchuk
79
290k
Debugging Ruby Performance
tmm1
65
10k
The Mythical Team-Month
searls
210
39k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
498
130k
Building Adaptive Systems
keathley
25
1.2k
Product Roadmaps are Hard
iamctodd
35
6.9k
Building a Scalable Design System with Sketch
lauravandoore
448
30k
The Invisible Side of Design
smashingmag
290
48k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
21
1.4k
How GitHub (no longer) Works
holman
297
140k
Transcript
Why Programs Fail - Observing Facts ߊ : ޙഅ҃ (rabidus@gmail.com)
ߊੌ : 2007֙ 4ਘ 16ੌ
Table of contents Observing Facts Log Interactive Debugging Post-mortem Debugging
Query Event Visualization
Observing Facts ҳੋ प೯ীࢲ ੌযաח ࢎपٜ(Facts)ܳ ҙ (Observing) оࢸҗ োਸ
ా೧ࢲ ٘ߧਤ Ѿҗܳ ҙ ҙ ਗ рࢼೞ ݈ইঠ ೠ. ޖਸ ઁ ҙೡ Ѫੋ ঌইঠ ೠ ҅ਵ۽ ೯ೞۄ ҙ ߑߨ Log Interactive Debugging Post-mortem Debugging
Log ۽Ӓ۔ ࢎपਸ ۱ೞח ߑߨ ٣ߡӒ ۽Ӓ, printf٣ߡӦ ױ ࠙ೠ
٘ ࠙ೠ ۱ ࣘب ೞ ܐ ࣚप
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 о߸ੋ ࣁب ೲਊ ޙઁ ࢿѺਸ ҳ࠙ ੌҙࢿ ࢎਊೡ ࣻ ח ۽Ӧਸ ࢤࢿ
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; }
Log Library ۽Ӧ ױਸ ӓࠂ ળ ഋधࢎਊ ਊ ࠭য ਗ
۽Ӓ য়ߡ٘ ࠺زӝ ۽Ӓ Windows Service, remote socket ۽Ӓ ۨ߰ ۽Ӓ ২࣌ ਗ ੌҙػ ੋఠಕझ ઙܨ Log4XXX NT Event Log DarkLog
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
Log4XXX (Con’t)
NT Event Log
DarkView Concept Server Server Server Server Server log aggregater (windows
service) darkview log data remote socket i/o query
DarkView (Con’t)
Aspect पઁ٘(ز)ܳ ࢸݺ(aspect)ೞח ۽Ӧ (advice)ܳ पઁ ٘৬ ܻ࠙ೞৈ ࢿೞৈ ߹ب
ஹੌ۞(ajc)۽ ֍য (weaving). ۽Ӓо प೯ؼ ࣗ, ਤ(point cut)ܳ ݺद ೡ ࣻ . पઁ ٘ী ೱਸ ঋਵݴ, ࢶఖਵ۽ ࢎਊоמೞ Ҋ ࢎਊ ए ࣛܖ࣌
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()”); } }
Interactive Debugging Debuggerܳ ࢎਊೞৈ पदрਵ۽ ҙ औѱ द ೡ
ࣻ . ࣗझ ࣻ, ஹੌ ਃহ ߄۽ ҙ оמ ਬোೠ ҙ ࣻ೯ ࣻ, ؘఠ ҙ оמ пੋ ࣁ࣌ द ۽Ӓ۔ ࢚కܳ द೧ ࠁҊ ࡅܰѱ Ѿҗܳ חؘ (gdb command) Debugger ઑѤ ۽Ӓ۔ਸ प೯ೞҊ ౠ ઑѤೞী ݥ୶ѱ ೧ঠ ೠ. ػ ۽Ӓ۔ ࢚కܳ ҙ оמ೧ঠ ೠ. ػ ۽Ӓ۔ ࢚కܳ ߸҃ ೡ ࣻ যঠ ೠ.
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)
Visual Studio Debugger Visualization
DEMO DDD Visualization
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
WinDBG
Dr. Watson
DEMO User Dump
Windows Error Reporting
Windows Debug Tool ౠ ࢚ടীࢲ ਬਊೞѱ ࢎਊೞח ٣ߡӦ ో GFlag
Heap curruption Performance Monitoring hang(dead lock, cpu 100%)
DEMO GFlag
Performance Monitor
FIN