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
920
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
Building AI with AI
inesmontani
PRO
1
1.1k
Ecommerce SEO: The Keys for Success Now & Beyond - #SERPConf2024
aleyda
1
2k
brightonSEO & MeasureFest 2025 - Christian Goodrich - Winning strategies for Black Friday CRO & PPC
cargoodrich
3
740
We Analyzed 250 Million AI Search Results: Here's What I Found
joshbly
1
1.4k
Art, The Web, and Tiny UX
lynnandtonic
304
22k
What Being in a Rock Band Can Teach Us About Real World SEO
427marketing
0
1k
AI Search: Implications for SEO and How to Move Forward - #ShenzhenSEOConference
aleyda
1
1.3k
Marketing Yourself as an Engineer | Alaka | Gurzu
gurzu
0
250
Primal Persuasion: How to Engage the Brain for Learning That Lasts
tmiket
0
380
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.8k
Technical Leadership for Architectural Decision Making
baasie
3
420
技術選定の審美眼(2025年版) / Understanding the Spiral of Technologies 2025 edition
twada
PRO
118
120k
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