The BAP Microexecution Framework
type provider

An observation provider. A provider facilitates introspection of the Primus Machine, for the sake of debugging and dumping the effects. The provider should not (and can't be) used for affecting the behavior of a machine, or for the analysis, as its main purpose is debugging, logging, and tracing the execution.

val provide : ?desc:string -> ?inspect:( 'a -> Core_kernel.Sexp.t ) -> ?package:string -> string -> 'a observation * 'a statement

provide ?inspect name returns a pair of two handlers. The first element is used to observe values, the second is used to provide values for the observation.

The inspect function may provide a sexp representation of an observed value, that will be used for introspection and pretty-printing (it is not required, and if it is provided, it is not necessary to disclose everything

val name : 'a observation -> string

name observation is a name of the observed attribute.

val inspect : 'a observation -> 'a -> Core_kernel.Sexp.t

inspect observation value returns a sexp representation of an observed value

val list_providers : unit -> provider list

enumerate all currently available observation providers

val list : unit -> info list

list () introspects all available observations.

  • since 2.1.0
module Provider : sig ... end

Data interface to the provider.