| Trace Compass Developer Guide | 
			
				|  |  |   | 
			
				|  |  | Introduction | 
		
		Table of Contents
		
			- 
				Table of Contents
			
- 
				Introduction
			
- 
				Implementing a New Trace Type
				
					- 
						Event Aspects
						
							- 
								Base and custom aspects
							
- 
								Creating event aspects programmatically
							
 
- 
						Optional Trace Type Attributes
						
							- 
								Default Editor
							
- 
								Events Table Type
							
- 
								Perspective
							
 
- 
						Other Considerations
						
							- 
								Collapsing of repetitive events
							
 
- 
						Best Practices
					
- 
						An Example: Nexus-lite parser
						
							- 
								Description of the file
							
- 
								NexusLite Plug-in
							
- 
								Trace Event
							
- 
								Trace Reader
							
- 
								Trace Context
							
- 
								Trace Location
							
- 
								The ''org.eclipse.linuxtools.tmf.core.tracetype'' and ''org.eclipse.linuxtools.tmf.ui.tracetypeui'' plug-in extension points
							
 
 
- 
				View Tutorial
				
					- 
						Prerequisites
					
- 
						Creating an Eclipse UI Plug-in
					
- 
						Creating a View
					
- 
						Implementing a view
						
							- 
								Adding an Empty Chart
							
- 
								Signal Handling
							
- 
								Requesting Data
							
- 
								Transferring Data to the Chart
							
- 
								Adjusting the Range
							
- 
								Formatting the Time Stamps
							
- 
								Pin feature
							
 
- 
						TMF Built-in Views and Viewers
					
- 
						Timing Analysis Views and Viewers
					
 
- 
				Component Interaction
				
					- 
						Sending Signals
					
- 
						Receiving Signals
					
- 
						Signal Throttling
					
- 
						Ignoring inbound/outbound signals
					
- 
						Signal Reference
						
							- 
								TmfStartSynchSignal
							
- 
								TmfEndSynchSignal
							
- 
								TmfTraceOpenedSignal
							
- 
								TmfTraceSelectedSignal
							
- 
								TmfTraceClosedSignal
							
- 
								TmfTraceRangeUpdatedSignal
							
- 
								TmfTraceUpdatedSignal
							
- 
								TmfSelectionRangeUpdatedSignal
							
- 
								TmfWindowRangeUpdatedSignal
							
- 
								TmfEventFilterAppliedSignal
							
- 
								TmfEventSearchAppliedSignal
							
- 
								TmfTimestampFormatUpdateSignal
							
- 
								TmfStatsUpdatedSignal
							
- 
								TmfPacketStreamSelected
							
- 
								TmfStartAnalysisSignal
							
- 
								TmfCpuSelectedSignal
							
- 
								TmfThreadSelectedSignal
							
- 
								TmfSymbolProviderUpdatedSignal
							
- 
								TmfTraceSynchronizedSignal
							
- 
								TmfMarkerEventSourceUpdatedSignal
							
 
- 
						Debugging
					
 
- 
				Generic State System
				
					- 
						Introduction
					
- 
						High-level components
					
- 
						Definitions
						
							- 
								Attribute
							
- 
								Attribute Tree
							
- 
								Quark
							
- 
								State value
							
- 
								State change
							
- 
								State interval
							
- 
								State history
							
- 
								Construction phase
							
- 
								Queries
								
									- 
										Full queries
									
- 
										Single queries
									
- 
										2D queries
									
 
 
- 
						Relevant interfaces/classes
						
							- 
								Main classes in org.eclipse.tracecompass.tmf.core.statesystem
								
									- 
										ITmfStateProvider / AbstractTmfStateProvider
									
- 
										TmfStateSystemFactory
									
- 
										ITmfStateSystem
										
											- 
												getQuarkAbsolute()/getQuarkRelative()
											
- 
												optQuarkAbsolute()/optQuarkRelative()
											
- 
												getQuarks()
											
- 
												waitUntilBuilt()
											
- 
												queryFullState()
											
- 
												querySingleState()
											
 
- 
										ITmfStateSystemBuilder
										
											- 
												getQuark*AndAdd()
											
- 
												modifyAttribute()
											
- 
												closeHistory()
											
 
 
- 
								Other relevant interfaces
								
									- 
										ITmfStateValue
									
- 
										ITmfStateInterval
									
 
- 
								Exceptions
								
									- 
										AttributeNotFoundException
									
- 
										StateValueTypeException
									
- 
										TimeRangeException
									
- 
										StateSystemDisposedException
									
 
 
- 
						Comparison of state system backends
						
							- 
								Full history
							
- 
								Null history
							
- 
								In-memory history
							
- 
								Partial history
							
 
- 
						State System Operations
						
							- 
								queryRangeMax()
							
- 
								queryRangeMin()
							
- 
								queryRangeAverage()
							
 
- 
						Code example
						
							- 
								State Provider
							
- 
								Analysis module definition
							
 
- 
						Mipmap feature
						
							- 
								AbstractTmfMipmapStateProvider
							
 
 
- 
				UML2 Sequence Diagram Framework
				
					- 
						TMF UML2 Sequence Diagram Extensions
					
- 
						Management of the Extension Point
					
- 
						Sequence Diagram View
						
							- 
								Supported Widgets
							
- 
								Zooming
							
- 
								Printing
							
- 
								Key Bindings
							
- 
								Preferences
							
- 
								Callback hooks
							
 
- 
						Tutorial
						
							- 
								Prerequisites
							
- 
								Creating an Eclipse UI Plug-in
							
- 
								Creating a Sequence Diagram View
							
- 
								Defining the uml2SDLoader Extension
							
- 
								Implementing the Loader Class
							
- 
								Adding time information
							
- 
								Default Coolbar and Menu Items
							
- 
								Implementing Optional Callbacks
								
									- 
										Using the Paging Provider Interface
									
- 
										Using the Find Provider Interface
									
- 
										Using the Filter Provider Interface
									
- 
										Using the Extended Action Bar Provider Interface
									
- 
										Using the Properties Provider Interface
									
- 
										Using the Collapse Provider Interface
									
- 
										Using the Selection Provider Service
									
 
- 
								Printing a Sequence Diagram
							
- 
								Using one Sequence Diagram View with Multiple Loaders
							
- 
								Downloading the Tutorial
							
 
- 
						Integration of Tracing and Monitoring Framework with Sequence Diagram Framework
						
							- 
								Reference Implementation
							
- 
								Used Sequence Diagram Features
								
									- 
										Advanced paging
									
- 
										Basic finding
									
- 
										Basic filtering
									
- 
										Selection Service
									
 
- 
								Used TMF Features
								
									- 
										TMF Experiment and Trace for accessing traces
									
- 
										TMF Event Request Framework
									
- 
										TMF Signal Framework
									
 
- 
								Supported Traces
							
- 
								Trace Format
							
- 
								How to use the Reference Implementation
							
- 
								Extending the Reference Loader
							
 
 
- 
				CTF Parser
				
					- 
						CTF Format
						
							- 
								Metadata
							
- 
								Event Streams
							
 
- 
						Reading a trace
					
- 
						Seeking in a trace
					
- 
						Interfacing to TMF
						
							- 
								CtfLocation
							
- 
								CtfTmfTrace
							
- 
								CtfIterator
							
- 
								CtfIteratorManager
							
- 
								CtfTmfContext
							
- 
								CtfTmfTimestamp
							
- 
								CtfTmfEvent
							
- 
								Other
							
- 
								Limitations
							
 
 
- 
				Event matching and trace synchronization
				
					- 
						Event matching interfaces
					
- 
						Implementation details and how to extend it
						
							- 
								ITmfEventMatching interface and derived classes
							
- 
								ITmfMatchEventDefinition interface and its derived classes
							
- 
								IMatchProcessingUnit interface and derived classes
							
 
- 
						Code examples
						
							- 
								Using network packets matching in an analysis
							
- 
								Match events from UST traces
							
 
- 
						Trace synchronization
						
							- 
								Synchronization algorithm
							
- 
								Timestamp transforms
							
 
- 
						Todo
					
 
- 
				Analysis Framework
				
					- 
						Creating a new module
						
							- 
								Example
							
- 
								Available base analysis classes and interfaces
							
- 
								How it works
							
 
- 
						Telling TMF about the analysis module
					
- 
						Attaching outputs and views to the analysis module
						
							- 
								Using the extension point to add outputs
							
 
- 
						Providing help for the module
					
- 
						Using analysis parameter providers
						
							- 
								Example parameter provider
							
- 
								Register the parameter provider to the analysis
							
 
- 
						Providing requirements to analyses
						
							- 
								Analysis requirement provider API
							
- 
								Requirement values
							
- 
								Example of providing requirements
							
 
- 
						TODO
					
 
- 
				TMF Remote API
				
					- 
						Prerequisites
					
- 
						TmfRemoteConnectionFactory
						
							- 
								Accessing the remote services manager (OSGI service)
							
- 
								Obtaining a IRemoteConnection
							
- 
								Creating an IRemoteConnection instance
							
- 
								Providing a connection factory
							
 
- 
						RemoteSystemProxy
						
							- 
								Creating a RemoteSystemProxy
							
- 
								Opening the remote connection
							
- 
								Closing the remote connection
							
- 
								Disposing the remote connection
							
- 
								Checking the connection state
							
- 
								Retrieving the IRemoteConnection instance
							
- 
								Obtaining a command shell
							
 
 
- 
				Performance Tests
				
					- 
						Add performance tests
						
							- 
								Where
							
- 
								How
							
- 
								Run a performance test
							
 
- 
						ABC of performance testing
						
							- 
								Determine what to test
							
- 
								Metrics descriptions and considerations
							
 
 
- 
				Network Tracing
				
					- 
						Adding a protocol
						
							- 
								Architecture
							
- 
								UDP Packet Structure
							
- 
								Creating the UDPPacket
							
- 
								Creating the UDPEndpoint
							
- 
								Registering the UDP protocol
							
 
- 
						Adding stream-based views
					
- 
						TODO
					
 
- 
				Markers
				
					- 
						Trace-specific markers
					
- 
						View-specific markers
					
 
- 
				Virtual Machine Analysis
			
- 
				JUL Logging
				
					- 
						Use a static logger for each class
					
- 
						Use a message supplier
					
- 
						Choose the appropriate log level
					
- 
						Log message format
					
- 
						Logging to populate Callstacks and Callgraph analyses
					
- 
						Logging to track Object life cycles
					
- 
						Logging to track Asynchronous operations
					
- 
						Analyzing Trace Compass Logs
					
 
- 
				XML schema extension
				
					- 
						Extending the schema
					
- 
						Parsing the schema
					
- 
						Adding the extension point
					
 
- 
				OS Execution Graph Extension
				
					- 
						Write the graph extension
					
- 
						Adding the extension point
					
 
- 
				Data Providers
				
					- 
						Data provider types
						
							- 
								XY
							
- 
								Time Graph
							
 
- 
						Data provider management
						
							- 
								Data Provider Factories
							
- 
								Extension point
							
- 
								Experiments
							
 
- 
						Utilities
					
- 
						Views
						
							- 
								XY views
							
- 
								Time Graph Views
							
 
 
		
			
				|  |  |   | 
			
				|  |  | Introduction |