Deja Insight

What is Deja Insight? At its core, Insight is a logging system. But, Insight takes the ideas behind "logging" and pushes them to new and previously unexplored extremes. In addition to being an excellent logger, Insight includes functionality normally associated with debuggers, profilers, and various other development tools. All state information is tracked over the entire application execution history, thus allowing Insight to display the state of the heap or any instrumented object instance for any point in time. Furthermore, all data is cross referenced so Insight can, for example, display all log entries generated by a specific object instance.

Trace Logging

  • Enhanced printf style logging functionality.
  • Specify the channel per message.
  • Messages can be hierarchically filtered and/or suppressed based on channel.
  • Color coding for warnings and errors.
  • Each log tracks: Time, Object, Thread, Context, and Source.
  • Optimized for performance. For example, the DejaLib does not perform any "sprintf" within your application. Instead, Insight caches the format string and only the variable argument data is transmitted.

Object Awareness

  • Record the state of an object at any time during it's life.
  • Entire history of every known object is recorded and available interactively.
  • Easily identify and track "leaked objects".
  • Specify the "active object" to correlate log messages or allocations with that object.
  • In addition to object specific member data, information available per object includes: Creation and Destruction times, Type, Address, Name, and Source.

Context

  • A light weight call stack history for the entire execution for all threads.
  • Presented either as a full call path tree, or as a flat list.
  • Profiling information available per context includes Hits, Total Time, Self Time, Global Percent, and more.
  • Use the Time Bar to select a range and get profiling information for a single frame or an arbitrary range of time.

Frames

  • For frame based applications this display provides summary information for each frame.
  • Easily find slow frames using the bar graph displays which indicates the time taken for each frame. Application configurable limits are provided to color slow frames for easy identification.
  • Summary information includes: Heap activity, Time, FPS.

Heap Analysis

  • All heap transactions are recorded and cross referenced.
  • Heap state can be displayed for any moment in the execution history.
  • Easily identify and track memory leaks.
  • Spot degenerate allocation patterns.
  • Each allocation tracks: Address, Size, Time, Context, Object, and Source.
  • Graphical visualization of the entire heap.
  • Generate reports for heap usage at any point in your application.

Time Bar

  • Central to navigating through the execution history of your application.
  • Can be used to "scrub" through time to any point in execution history.
  • Mouse wheel to zoom in or out on time.
  • Range modes to select: Time to cursor, Closest frame, Closest bookmarked range, Custom range.
  • Bookmarks and Frame markers are displayed in the time bar for reference. Bookmarks can also be set at the cursor.

Integration

  • All views are aware of each other to assist in navigation and problem solving.
  • Data selected in one view is highlighted in related views.
  • Set "bookmarks" in any time related views.
  • Threads and objects can be named. All displays utilize the given names.

Future Features

  • Statistics and Graphs - Identify key data tracks and graph them over the execution history.
  • Tweaks - Alter in-game variables using the Insight application.
  • File I/O Log - Track all file I/O operations. Eliminate unnecessary seeks to optimize disc load times.
  • 3D View - Display a 3D representation of the game state for any point in time over the execution history.
  • And more...