The bug happens on the phone.

Report it there.

Logs and video can’t be replayed.

Reporting libraries capture screenshots and recordings, not the precise input behind a bug.

Record & replay needed a tether.

Earlier tools couldn’t record on a standalone device, without a host machine or server.

Device logsScreenshotsVideo recordingsReplayable input + GUI info
host
×
Introducing
ODBR
On-Device Bug Reporting for Android
9:41
Notes
Save
01Record on the device
02Capture every stream
03Report & replay

Hit record. Use the app.

ODBR runs in the background on a physical or virtual device. No host machine.

Four streams, captured.

Each new action triggers a screenshot and a UI-hierarchy dump.

A report you can replay.

A web app renders the report and serves a script that re-runs every event.

GetEvent/dev/input
tap (184, 300)
UI hierarchyui-dump.xml
<node class="Button" text="Save" bounds="[24,660][344,722]" clickable="true"/>
Sensorsaccelerometer · GPS
Screenshotsscreencap
BugReport→JSON→CouchDB→HTML report
replay · sendevent script
sendevent /dev/input/event2 3 53 184 # x
sendevent /dev/input/event2 3 54 300 # y
sendevent /dev/input/event2 0 0 0 # sync
What a developer receives
ODBR BUG REPORT · NOTES

Note isn’t saved after editing

EXPECTEDThe edited note is saved
ACTUALThe list shows the old text
1 tap · Note row
2 type · Note body
3 tap · Button “Save”
+ screenshots · sensor traces
↓ Replayable script · adb / sendevent

On-Device Bug Reporting for Android Applications

Kevin Moran · Richard Bonett · Carlos Bernal-Cárdenas · Brendan Otten · Daniel Park · Denys Poshyvanyk
MOBILESoft 2017 · Tool Demos · IEEE/ACM International Conference on Mobile Software Engineering and Systems