Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Why Programs Fail - Observing Facts
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Jimmy Moon
July 03, 2007
160
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Why Programs Fail - Observing Facts
Jimmy Moon
July 03, 2007
More Decks by Jimmy Moon
See All by Jimmy Moon
Coding as Prompting Since 2025
ragingwind
0
910
Edge Computing for WebApp
ragingwind
0
150
Micro-Saas for developer who want a new
ragingwind
0
110
How to use The Fourth Language
ragingwind
0
230
Please Use The Fourth Language - WebAssembly
ragingwind
0
270
Head topics in Javascript, 2020
ragingwind
1
740
Recap Modern WebAssembly in CDS 2019
ragingwind
0
360
Today headlines in Javascript, 2019
ragingwind
0
560
Today, The Actions in Javascript
ragingwind
2
850
Featured
See All Featured
HU Berlin: Industrial-Strength Natural Language Processing with spaCy and Prodigy
inesmontani
PRO
0
410
HTML-Aware ERB: The Path to Reactive Rendering @ RubyCon 2026, Rimini, Italy
marcoroth
1
180
16th Malabo Montpellier Forum Presentation
akademiya2063
PRO
0
140
We Analyzed 250 Million AI Search Results: Here's What I Found
joshbly
1
1.4k
Embracing the Ebb and Flow
colly
88
5.1k
A designer walks into a library…
pauljervisheath
211
24k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
55k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3.5k
Principles of Awesome APIs and How to Build Them.
keavy
128
17k
Agile Leadership in an Agile Organization
kimpetersen
PRO
0
160
Abbi's Birthday
coloredviolet
2
8k
First, design no harm
axbom
PRO
2
1.2k
Transcript
Why Programs Fail - Observing Facts ߊ : ޙഅ҃ (
[email protected]
)
ߊੌ : 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