Title: New Features in Dyninst 5'1
1New Features in Dyninst 5.1
- Matthew LeGendre
- Ray Chen
2A Busy Year
- July 6, 2006 Dyninst 5.0
- AMD64 Support
- Threaded Event Handling
- New fine-grained instrumentation system
- . . .
- Sep 22, 2006 Dyninst 5.0.1
- Intel and Portland compiler support on AMD64
- Bug Fixes
- May 2007 Dyninst 5.1
3Paradyn/Dyninst 5.1
- Dyninst 5.1
- SymtabAPI
- Testsuite
- Performance Optimizations
- Catch-up
- Paradyn 5.1
- Paradyn as a Dyninst Client
4The SymtabAPI
- A library for parsing symbol information in
binaries. - You dont need to understand binary formats
- Cross-platform ELF, COFF, XCOFF, PE
- Allows updating of binaries, write-back for ELF
and XCOFF - XML Export
- The first part in the DyninstAPI split
5The Testsuite
- Splits Dyninsts monolithic tests with
micro-tests. - Better test coverage and easier to use
- Runs a cross product of tests, compilers,
mutatees, and dyninst run modes
./runTests test1_1 mutatee test1.mutatee_gcc
create_mode create result PASSED test1_1
mutatee test1.mutatee_gcc create_mode attach
result PASSED test1_1 mutatee
test1.mutatee_g create_mode create result
PASSED test1_1 mutatee test1.mutatee_g
create_mode attach result PASSED test1_1
mutatee test1.mutatee_g77 create_mode create
result PASSED test1_1 mutatee
test1.mutatee_g77 create_mode attach result
PASSED
6Performance Optimizations
- Generate efficient instrumentation
- Turn of instrumentation components you dont need.
mov 0x8049630,eax mov eax,0xfffffffc(ebp)
addl 0x1,0xfffffffc(ebp) mov
0xfffffffc(ebp),eax
incl 0x8049630
7Catch-Up
- Use finalizeInsertionSetWithCatchup to insert
instrumentation with Catch-up
int foo() printf(doing work) do_work()
return 0
8Paradyn/Dyninst Split
- Paradyn is now a proper client of Dyninst.
Paradyn
Dyninst
9Many, Many Other Features
- DWARF support on Solaris
- New Dyninst manual
- Shared memory library as a value added library
- Memory Modification
- New machine support
- Bug fixes
10Undocumented Feature
- Debugging Dyninst
- Ever had a problem with Dyninst?
- Cant use Dyninst on Dyninst
- Limited support for C
- 19 Environment Variables
- Dyninst checks for these at start
- Strategic printf()s at milestones in code
- Output to stderr
11Debugging Environment Variables
- Startup
- DYNINST_DEBUG_STARTUP
- DYNINST_DEBUG_PARSE
- DYNINST_DEBUG_DWARF
- Process Control
- DYNINST_DEBUG_PROCCONTROL
- DYNINST_DEBUG_FORKEXEC
12Debugging Environment Variables
- Dyninst Internal Threads
- DYNINST_DEBUG_THREAD
- DYNINST_DEBUG_MUTEX
- DYNINST_DEBUG_MAILBOX
- Mutatee Handling
- DYNINST_DEBUG_INFRPC
- DYNINST_DEBUG_STACKWALK
- DYNINST_DEBUG_DYN_UNW
- DYNINST_DEBUG_WRITE
13Debugging Environment Variables
- Instrumentation
- DYNINST_DEBUG_INST
- DYNINST_DEBUG_RELOC
- DYNINST_DEBUG_AST
- DYNINST_DEBUG_REGALLOC
- DYNINST_DEBUG_CATCHUP
- Miscellaneous
- DYNINST_DEBUG_DBI
- DYNINST_DEBUG_BPATCH
14Example Use
- gt
- gt ./parseThat /bin/ls
- Dyninst mutator terminated via signal 11.
- Core file generated.
15Example Use
- gt setenv DYNINST_DEBUG_STARTUP
- gt ./parseThat /bin/ls
- ltsnipgt
- UIprocess.C2461 Waiting for
- bootstrapped state...
- UIprocess.C2632 state bootstrapped
- Getting initial thread...
- Creating new BPatch_image...
- BPatch_processBPatch_process, completed.
- Dyninst mutator terminated via signal 11.
- Core file generated.
16Example Use
gt setenv DYNINST_DEBUG_BPATCH gt ./parseThat
/bin/ls ltsnipgt UI Calling char
getNameInt()... UI Finished call
getNameInt UI Calling getProceduresInt()... UI
Finished call getProceduresInt UI Calling
char getNameBuffer()... UI Finished call
getNameBuffer UI Calling void
BPatch_arithExprUn() Dyninst mutator terminated
via signal 11. Core file generated.
17Output
- Dont expect to understand output
- Intended for DyninstAPI developer or advanced
user - Expect us to request output from you
- Makes remote debugging sessions easier