Download presentation
Presentation is loading. Please wait.
Published byJennifer Carson Modified over 9 years ago
1
Paradyn Project Paradyn / Dyninst Week Madison, Wisconsin May 2-4, 2011 Paradyn Project Deconstruction of Dyninst: Best Practices and Lessons Learned Bill Williams
2
What is Componentization? Software Project Public Interface Neat Idea Deconstruction of Dyninst 2
3
Software Project Neat Idea What is Componentization? Public Interface Component Public Interface Component Deconstruction of Dyninst 3
4
Why Components? Expose existing functionality Build new tools easily Orthogonality Testability Improved code quality Deconstruction of Dyninst 4
5
Dyninst and the Components AST Binary Process Stackwalker API Stackwalker API Patch API Patch API Symtab API Symtab API DataFlow API DataFlow API Instruction API Parse API Parse API Code Gen Code Gen ProcControl API Binary = Existing Component = New Component = Proposed DyninstAPI
6
ParseAPI: Defining the component Block Edge Function Cached register liveness info Instrumentability InstPoints Dyninst CFG model Deconstruction of Dyninst 6
7
ParseAPI: Defining the component Block Edge Function Cached register liveness info Instrumentability InstPoints Dyninst extensionsParseAPI CFG model Deconstruction of Dyninst 7
8
PatchAPI: Refine your assumptions Deconstruction of Dyninst 8 PatchAPI Dyninst Paradyn
9
SymtabAPI: Creating good abstractions …hiding messy internals Great interface… Deconstruction of Dyninst 9 ELF PE XCOFF
10
InstructionAPI: Adding missing features Old: Control flow and not much else Deconstruction of Dyninst 10
11
InstructionAPI: Adding missing features New: control flow and data flow Deconstruction of Dyninst 11
12
ProcControlAPI: Build one to throw away Too many features, and I don’t need all of them! Deconstruction of Dyninst 12
13
ProcControlAPI: Build one to throw away Ah, something that just does what I need! Deconstruction of Dyninst 13
14
Stackwalker: When customers attack Dyninst requirements Call Stack Frame type Normal Optimized Signal handler Instrumentation Location 3 rd party Platform Linux Windows Solaris AIX Call Stack Frame type Normal Optimized Signal handler Location 1 st party 3 rd party Platform Linux BlueGene STAT requirements Deconstruction of Dyninst 14
15
DataflowAPI: Cool isn’t enough Customers: the difference between a module and a component Deconstruction of Dyninst 15
16
What we’ve learned Internal and external users driving interface design Test new interfaces Change code incrementally Keep your project’s details where they belong Deconstruction of Dyninst 16
17
Componentization Tradeoffs Stability vs. improvement Internal requirements vs. external requirements Development time vs. scope Structured vs. organic Early feedback vs. interface stability Deconstruction of Dyninst 17
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.