AppMap's Trace View allows you to see the events that occurred in your application while AppMap was recording. Events are shown in chronological order within a collapsible tree that allows for easy navigating.
Use Trace View to follow the path of any API request and follow it all the way through to your database and back. You'll see the values of function parameters, call timings, and any SQL queries that were run on your databases.
AppMap can visually represent all actually-used dependencies within an application. For example, if your Ruby application uses Rails, OpenSSL, and a PostgreSQL database, you will see each of those dependencies in the Dependency View.
Importantly, only dependencies that are used by your application at runtime are shown by AppMap. This allows you to determine if, for example, a 3rd-party library with a known vulnerability is truly used by your application.
AppMap makes it simple to see how your application interacts with SQL databases. You can quickly discover query inefficiencies and anti-patterns that pose hidden scalability and reliability risks even if your application seems to be working well.
With AppMap, not only are trips to database logs no longer required to see the SQL commands, but the commands are also directly linked to the code that initiates their execution, helping you understand the impact of code changes on database operations and performance
AppMap automatically indexes your application's code objects (functions, APIs, DB queries) and presents them in an easily browsable and searchable catalog, right in your code editor.
Whether you're learning a new code base or trying to debug a production issue, having all the important parts of your application's runtime behavior available at your fingertips dramatically reduces engineering toil.
AppMap knows how popular frameworks like Spring, Rails, Django, and Express work. That means that when you view an AppMap, you'll only see the important parts of how an API request is handled.
For example, instead of seeing dozens of internal events related to how a framework receives data over TCP, manages its thread pools, and unmarshals payloads, you'll instead see something simple like
Since it knows how these frameworks operate internally, AppMap will also automatically label framework function calls that provide important services. For example, AppMap will apply the
crypto.decrypt label to an OpenSSL decryption function call, or the code label to any call to a function that validates a user's identity. Those labels then make it easy to understand, search, and analyze code execution paths.