@inproceedings {64,
	title = {Lowering Overhead in Sampling-based Execution Monitoring and Tracing},
	booktitle = {Proc. of the ACM SIGPLAN/SIGBED Conference on Languages, Compilers, Tools and Theory for Embedded Systems (LCTES)},
	year = {2011},
	pages = {101-110},
	address = {Chicago, USA},
	abstract = {<p>Debugging is an important phase in the embedded software development cycle because of its high proportion in the overall cost in the product development. Debugging is difficult for real-time applications as such programs are time-sensitive and must meet deadlines in often a resource constrained environment. A common approach for real-time systems is to monitor the execution instead of stepping through the program, because stepping will usually violate all deadline constraints. We consider a sampling-based approach for monitoring, because of its predictable overhead for the system compared to traditional monitoring. However, the sampling-based approach can easily have high overhead depending on the length of branches and the granularity of the monitoring effort. To reduce this overhead, we instrument the program with markers that will permit us to sample less frequently and thus reduce the overhead. This leads to the interesting problems of (a) where to place the markers in the code and (b) how to manipulate the markers. While related work investigates the first part, in this work, we investigate the second component of the problem. We investigate different instrumentation schemes and propose two new schemes based on bitvectors that significantly reduce the overhead for sampling-based execution monitoring.</p>
},
	keywords = {debugging, embedded, monitoring, sampling, tracing},
	isbn = {978-1-4503-0555-6},
	doi = {10.1145/1967677.1967692},
	url = {http://dl.acm.org/citation.cfm?id=1967692},
	author = {Johnson Thomas and Fischmeister, Sebastian and Deepak Kumar}
}
@inproceedings {57,
	title = {Sampling-based Program Execution Monitoring},
	booktitle = {Proc. of the ACM SIGPLAN/SIGBED Conference on Languages, Compilers, and Tools for Embedded Systems (LCTES)},
	year = {2010},
	month = {April},
	pages = {133-142},
	address = {Stockholm, Sweden},
	abstract = {<p>For its high overall cost during product development, program debugging is an important aspect of system development. Debugging is a hard and complex activity, especially in time-sensitive systems which have limited resources and demanding timing constraints. System tracing is a frequently used technique for debugging embedded systems. A specific use of system tracing is to monitor and debug control-flow problems in programs. However, it is difficult to implement because of the potentially high overhead it might introduce to the system and the changes which can occur to the system behaviour due to tracing. To solve the above problems, in this work, we present a sampling-based approach to execution monitoring which specifically helps developers debug time-sensitive systems such as real-time applications. We build the system model and propose three theorems to determine the sampling period in different scenarios. We also design seven heuristics and an instrumentation framework to extend the sampling period which can reduce the monitoring overhead and achieve an optimal tradeoff between accuracy and overhead introduced by instrumentation. Using this monitoring framework, we can use the information extracted through sampling to reconstruct the system state and execution paths to locate the deviation.</p>
},
	keywords = {debugging, embedded, monitoring, sampling, tracing},
	isbn = {978-1-60558-953-4},
	doi = {10.1145/1755888.1755908},
	url = {http://dl.acm.org/citation.cfm?id=1755908},
	author = {Fischmeister, Sebastian and Ba, Yanmeng}
}
