Stateful Breakpoints - Bodden

Post on 27-Dec-2021

9 views 0 download

transcript

Stateful BreakpointsEric Bodden

“After closing a stream sdo not read from s any longer.”

2

APIs come with usage rules

“After closing a stream sdo not read from s any longer.”

2

open closed error

read close close,read

close read

APIs come with usage rules

Idea

3

Automatically halt program when

it violates a rule

4

read

closeclose(file)

read(theFile)

Conditional Breakpointscannot refer to “old” state

4

read

closeclose(file)

read(theFile)

Conditional Breakpointscannot refer to “old” state

4

read

closeclose(file)

read(theFile)

file==theFile

Conditional Breakpointscannot refer to “old” state

4

read

closeclose(file)

read(theFile)

file==theFile

Conditional Breakpointscannot refer to “old” state

5

close(f1)

read(f)close(f)

Proposal: Stateful Breakpoints

5

close(f1)

read(f)close(f)

Proposal: Stateful Breakpoints

5

close(f1)read(f2)

read(f)close(f)

Proposal: Stateful Breakpoints

5

close(f1)read(f2)read(f1)

read(f)close(f)

Proposal: Stateful Breakpoints

5

close(f1)read(f2)read(f1)

read(f)close(f)

Proposal: Stateful Breakpoints

6

Current Prototype

6

Current Prototype

6

Current Prototype

6

Current Prototype

6

Current Prototype

6

Current Prototype

Use Cases

7

1.) Simplify Debugging

2.) Attach SB to bug report

3.) Ship SBs with library

8

Implementation

Builds on MOPBox library:http://mopbox.googlecode.com/Demo at RV 2007

Fire parameterized events at MOPBox monitors

MOPBox calls back when regex matches

9

Open Questions

Anything missing?

Maybe still too hard to specify?

Can Stateful Breakpoints be inferred?

10

Related WorkControl-flow BreakpointsChern & De Volder, AOSD 2007

Omniscient/Re-executing DebuggersPothier et al., OOPSLA 2007Mirghasemi et al., ESEC/FSE 2011

Typestate verification, runtime monitoringBierhoff & Aldrich, OOPSLA 2007Allan et al., OOPSLA 2005 (Tracematches)Chen & Rosu, OOPSLA 2007 (JavaMOP)

Fault localization toolsAyewah et al., OOPSLA 2007 (FindBugs)

here!

11

http://bodden.de/sbp/

close(f1)read(f2)read(f1)

read(f)close(f)

http://bodden.de/mopbox/

11

http://bodden.de/sbp/

close(f1)read(f2)read(f1)

read(f)close(f)

http://bodden.de/mopbox/