How This Book Is Organized

Chapter 1, Introduction provides a whirlwind tour of the entire DTrace facility and introduces readers to the D programming language. Chapter 2, Types, Operators, and Expressions, Chapter 3, Variables, and Chapter 4, D Program Structure then discuss the fundamentals of D in greater detail, and explain how D programs are converted into dynamic instrumentation. This initial group of chapters should be read first by all readers.

Chapter 5, Pointers and Arrays, Chapter 6, Strings, Chapter 7, Structs and Unions, and Chapter 8, Type and Constant Definitions discuss the remaining D language features, most of which will be familiar already to C, C++, and Java™ programmers. Readers who are unfamiliar with any of these languages should read these chapters; more experienced programmers may wish to proceed directly to later chapters.

Chapter 9, Aggregations and Chapter 10, Actions and Subroutines discuss DTrace's powerful primitive for aggregating data and the set of built-in actions that can be used to build tracing experiments. All readers should carefully read these chapters.

Chapter 11, Buffers and Buffering describes the DTrace policies for buffering data and how these can be configured. This chapter should be read by users once they are familiar with constructing and running D programs.

Chapter 12, Output Formatting describes the D output formatting actions as well as the default policy for formatting trace data. Readers who are familiar with the C printf function can rapidly skim this chapter. Readers who have never seen printf before should read this chapter carefully.

Chapter 13, Speculative Tracing discusses the DTrace facility for speculatively committing data to a trace buffer. This chapter should be read by users who need to use DTrace in a situation where data must be traced prior to understanding whether it is relevant to the question at hand.

Chapter 14, dtrace ( 1M ) Utility provides a complete reference for the dtrace command-line utility, similar to the corresponding on-line manual page. Readers may wish to refer to this chapter when various command-line options are presented elsewhere in the book. Chapter 15, Scripting then discusses how the dtrace utility can be used to construct executable D scripts and process their command-line arguments, and Chapter 16, Options and Tunables describes the options that can be tuned on the command-line or from within a D program itself.

The group of chapters beginning with Chapter 17, dtrace Provider and ending with Chapter 32, fasttrap Provider discuss the various DTrace providers that can be used to instrument various aspects of the Solaris system. All readers should skim these chapters to familiarize themselves with the various providers, and then return back to read particular chapters in detail as needed.

Chapter 33, User Process Tracing discusses examples of using DTrace to instrument user processes. Chapter 34, Statically Defined Tracing for User Applications describes how application programmers can add customized DTrace providers and probes to user applications. Readers who are user program developers or administrators and wish to use DTrace to investigate user process behavior should read these chapters.

Chapter 35, Security and the remaining chapters discuss advanced topics such as security, versioning, and stability attributes of DTrace, and how to perform boot-time and post-mortem tracing with DTrace. These chapters are intended for advanced DTrace users.