Debugging Applications in Pervasive Computing

Similar documents
GDB Tutorial. A Walkthrough with Examples. CMSC Spring Last modified March 22, GDB Tutorial

CSE 374 Programming Concepts & Tools. Brandon Myers Winter 2015 Lecture 11 gdb and Debugging (Thanks to Hal Perkins)

COPYRIGHT 13 June 2017MARKLOGIC CORPORATION. ALL RIGHTS RESERVED.

Charity

Boot Camp. Dave Eckhardt Bruce Maggs

GFS: The Google File System

Reliable programming

GFS: The Google File System. Dr. Yingwu Zhu

CSE 374 Programming Concepts & Tools

From eventual to strong consistency. Primary-Backup Replication. Primary-Backup Replication. Replication State Machines via Primary-Backup

CSE 333 Lecture 1 - Systems programming

The hell of CPU debugging

Debugging. ICS312 Machine-Level and Systems Programming. Henri Casanova

Upgrading Databases. without losing your data, your performance or your mind. Charity

Lecture 1 Introduction Pervasive Computing MIT & SMA 5508

Replication. Feb 10, 2016 CPSC 416

CS354 gdb Tutorial Written by Chris Feilbach

Lecture 1 Introduction Pervasive & Mobile Computing MIT 6.883

CS 326: Operating Systems. Lecture 1

Lab 8. Follow along with your TA as they demo GDB. Make sure you understand all of the commands, how and when to use them.

Active Testing for Concurrent Programs

Wind River. All Rights Reserved.

Transcript: A Day in the Life Desiree: 7 th Grade Learning Coach Profile

MASSACHUSETTS INSTITUTE OF TECHNOLOGY Computer Systems Engineering: Spring Quiz I Solutions

Announcement. Exercise #2 will be out today. Due date is next Monday

Phony Programming (Series 60 Symbian Phones)

PL in the Broader Research Community

Introduction to Concurrent Software Systems. CSCI 5828: Foundations of Software Engineering Lecture 12 09/29/2016

Deviations are things that modify a thread s normal flow of control. Unix has long had signals, and these must be dealt with in multithreaded

DDT: A visual, parallel debugger on Ra

CMPSC 311- Introduction to Systems Programming Module: Systems Programming

CSE506: Operating Systems CSE 506: Operating Systems

EECS 482 Introduction to Operating Systems

DMA safety in buffers for Linux Kernel device drivers

Sleeping Barber CSCI 201 Principles of Software Development

CMPSC 311- Introduction to Systems Programming Module: Systems Programming

Profilers and Debuggers. Introductory Material. One-Slide Summary

Deterministic Parallel Programming

Phony Programming (Series 60 Symbian Phones)

Creating User-Friendly Exploits

Background: Operating Systems

Race Catcher. Automatically Pinpoints Concurrency Defects in Multi-threaded JVM Applications with 0% False Positives.

Outline. Threads. Single and Multithreaded Processes. Benefits of Threads. Eike Ritter 1. Modified: October 16, 2012

Introduction to Concurrent Software Systems. CSCI 5828: Foundations of Software Engineering Lecture 08 09/17/2015

Deterministic Replay and Reverse Debugging for QEMU

Multithreading and Interactive Programs

Alfresco repo under concurrent write load. Alexey Vasyukov, ITD Systems

Reviewing gcc, make, gdb, and Linux Editors 1

Reverse Engineering with IDA Pro. CS4379/5375 Software Reverse Engineering Dr. Jaime C. Acosta

Containerised Development of a Scientific Data Management System Ben Leighton, Andrew Freebairn, Ashley Sommer, Jonathan Yu, Simon Cox LAND AND WATER

Debugging distributed systems. CS514: Intermediate Course in Operating Systems. Today s topic. Waterfall Model. V Model.

Software Based Fault Injection Framework For Storage Systems Vinod Eswaraprasad Smitha Jayaram Wipro Technologies

Firmware Updates for Internet of Things Devices

Yahoo Messenger Error Code 7 Latest Version

What is uop Cracking?

Effort Free IT User Guidelines

Active Testing for Concurrent Programs

CMPSC 311- Introduction to Systems Programming Module: Systems Programming

The COS 333 Project. Robert M. Dondero, Ph.D. Princeton University

Introduction to Distributed Systems. INF5040/9040 Autumn 2018 Lecturer: Eli Gjørven (ifi/uio)

Lesson 2. Introducing Apps. In this lesson, you ll unlock the true power of your computer by learning to use apps!

Name: Instructions. Problem 1 : Short answer. [48 points] CMU / Storage Systems 20 April 2011 Spring 2011 Exam 2

DER GOBBLE. Good Secure Crypto Wallet Practices. What is your wallet?

Internet Technology. 06. Exam 1 Review Paul Krzyzanowski. Rutgers University. Spring 2016

CS 167 Final Exam Solutions

Using Speech Recognition for controlling a Pan-Tilt-Zoom Network Camera

Distributed Systems Principles and Paradigms

Internet Technology 3/2/2016

Under the Debug menu, there are two menu items for executing your code: the Start (F5) option and the

Recitation 10: Malloc Lab

Supplement: Visual C++ Debugging

CSE 374 Programming Concepts & Tools

Consistency: Relaxed. SWE 622, Spring 2017 Distributed Software Engineering

Autofocus Modes. The focus and exposure can then be adjusted to fit that face no matter what portion of the picture it is in.

Installing and Configuring the Voice UPB Bridge updated 1-Jan-2019

Bullet Cache. Balancing speed and usability in a cache server. Ivan Voras

Memory & Thread Debugger

LAB #8. Last Survey, I promise!!! Please fill out this really quick survey about paired programming and information about your declared major and CS.

CSE 333 Lecture 1 - Systems programming

Programming Languages. Thunks, Laziness, Streams, Memoization. Adapted from Dan Grossman s PL class, U. of Washington

CSS Slideshow. Brad Barton. Report 11 on the work of Week 13 12/08/09

Voice over problems Posted by erir - 13 Oct :15

Software Engineering /48

CS 160: Evaluation. Professor John Canny Spring /15/2006 1

Samuel T. King, George W. Dunlap, and Peter M. Chen University of Michigan. Presented by: Zhiyong (Ricky) Cheng

Blackfin Online Learning & Development

RCU. ò Walk through two system calls in some detail. ò Open and read. ò Too much code to cover all FS system calls. ò 3 Cases for a dentry:

VFS, Continued. Don Porter CSE 506

CMSC 433 Programming Language Technologies and Paradigms. Concurrency

DMP Deterministic Shared Memory Multiprocessing

HTML/CSS Lesson Plans

Lecture 9: File System. topic: file systems what they are how the xv6 file system works intro to larger topics

A Design for Comprehensive Kernel Instrumentation

Installing and Configuring the Voice UPB Bridge updated 22-Jan-2018

CSCI 1100L: Topics in Computing Lab Lab 11: Programming with Scratch

Reversible Concurrent Systems

Multithreading and Interactive Programs

Close Your File Template

Yaffs Tuning. Charles Manning

Virtual Environments: System Architectures

Transcription:

Debugging Applications in Pervasive Computing Larry May 1, 2006 SMA 5508; MIT 6.883 1

Outline Video of Speech Controlled Animation Survey of approaches to debugging

Turning bugs into features Speech recognition is not 100% Who likes it when its wrong? Children Example: story telling (easy reading) Computer recognizes the words that the child is reading and animates it

Voice controlled animation A very fertile domain: room for improvement mouse is very limited hard to specify parameters choose from list -- awkward when long one action and one parameter speech allows multiple parameters (and sub-parameters) objects are parameters; adjectives are params of params Unfortunately, no good models of children s voices so we have to act like children :)

Testbed for other ideas Naming give basic object a name give composite object a name (macro) many parameters come from context (environment) differentiate between base object and instantiated object

Controlling Errors Two types of consequences to errors: something useful (or interesting) something destructive (or boring) Who gets to decide? tolerating some errors --> flexibility avoiding all errors --> too rigid

Semantics Where does the semantics get checked? no consensus (speech, vision, sketch)

Our approach Command: action and parameters error: incompatible action and param dogs: sit, run, lick, beg, bark cats: sit, run, lick, sleep, purr Consider the error: dog purr if cat is on stage, it purrs if dog is on stage, do random action random actor does random action

Considerations Really depends on the cost of error can action be undone easily? is the user getting frustrated? Rather than selecting at random choose the most likely action

Informing the user System consisted of lots of components on lots of machines flash (XP), galaxy (Linux), audio (ipaq) how to find out about serious errors? cannot inform user; no output dev not clear if other apps will forward

Some Challenges of traditional debugging approaches 11

Stop/Inspect/Go Stepping through the code (e.g. gdb) stop and inspect memory & data structures hard to get program to stop or break at correct point Run backwards problem usually occurs just before death, so backup and check data-structures Many ops are reversible ( x = x + 1 x = x - 1) push on stack control flow and non-reverse ops

Stop/Inspect/Go Logs Log all interesting events ( I/O?) Need way to organize independent logs Need way to see paths in the forest visualization tools are helpful extensive log event tags Log control-flow history off-line playback or re-execution

Risk of Masking Bugs Shared Memory (lots of experience) Many things look like share memory automatic synchronization; caching; distributed FS Low-level bugs due to strange timing bugs set flag; check flag; do operation Programmers think everything executes at same rate weird bugs when on process executes a little, pauses, executes a little more, pauses, etc.

Concurrency Debuggers don t deal well with threads. Conditional Breakpoints: Break when phone locks DB & camera locks mic Need deterministic replay Need to understand all possible parallel executions race-condition detector Software Transactions (memory & data-base) hand time-outs heart-beat messages

Distributed Communication Central way to control systemwide parameters duplicate message detection; nonidempotent operations unified interface to debuggers on different systems & OS s start up; switch between debuggers Distributed LEDs (one per process)

Virtual Computer Start with a set of Emulators & Virtual Computers Add Scheduler (various orderings) Fault-Injection Instrumentation Debug under idealized world then move to real world

Yet another approach 18

Change-point detections What do you do when things stop working? Seek out a friend. Their first question: What did you change? Your first response: Nothing Your second response: Oh yea, thanks Too hard with pervasive computing env.

How to support this? Too hard at the moment to automatically fix all problems. Worthwhile to point out potential sources Monitor everything, learn what s typical report what is atypical monitoring must be on-line and cheap Use human-level timing sec, min, hour, day, week, month, year

Isn t this like data- mining? Data mining for failure indicators? No long log files; no labeled data On-line and easier Finding outliers is expensive Finding what recently changed is cheap Outlier

Use out-of-band communication If main application has problems error messages may not get forwarded normal channels of communication might be the source of difficulties want separate communication channel Use IM & SMS for query ubiquitous, natural, usually works

Wrapping up My conclusion is that physical world poses new challenges user s must help in fixing problems system must help the user in this task we ve only just begun...