When you export the Load Library Tracer profiler results to a database, AQTime creates a number of tables in it. The contents of most of these tables correspond to the contents of AQTime panels in which the profiling results are displayed. This topic describes the structure of database table that contain the exported Performance profiler results.
The exported results are stored to the following tables:
LOAD_LIBRARY_TRACER_CALL_STACK
LOAD_LIBRARY_TRACER_META_ROUTINES
The relationship between the mentioned tables is illustrated in the image below. This relationship is similar to the relationship of the data in AQTime’s Report and Details panels that contains the Load Library Tracer results.
The “root” table of the database is the INSTANCES table. It contains the list of all exported result sets and is shared by profilers. Each result set is identified by the INST_ID column value, which is unique among the table. All other database tables also have the INST_ID column that indicates the result set to which data of a specific table item belongs.
The LOAD_LIBRARY_TRACER_MODULES table corresponds to the result set that is displayed in the Report panel. Each row in this table corresponds to a module that was loaded to and unloaded from memory during the profiling. The ID column of the table specifies the modules’ identifier that is used by other database tables.
Each module that is listed in the Report panel could be loaded and unloaded several times. Every time the module is loaded, a module copy (or instance) is created in memory. The profiler traces the creation of module instances and displays information about them in the Module Instances table of the Details panels. The data of this table are exported to the LOAD_LIBRARY_TRACER_MODULE_INSTANCES database table.
Each record of this table corresponds to a module instance. The PARENT_ID column contains the module identifier (the same value that is stored in the ID column of the LOAD_LIBRARY_TRACER_MODULES table). The REC_ID column specifies the index of the instance relative to other instances of the same module. The ID column specifies the identifier of the instance in the table.
The profiler collects information about the sequence of function calls that led to the loading of a module in memory. The call stack data is exported to the LOAD_LIBRARY_TRACER_CALL_STACK table. Each row in this table corresponds to a function call. The PARENT_ID column specifies the identifier of the module instance, to which the call sequence corresponds (this is the same value that is stored in the ID column LOAD_LIBRARY_TRACER_MODULE_INSTANCES table). The COL__ column specifies the position of a call in the stack relative to other functions. The function call, whose COL__ is 0, corresponds to the top-most function in the call stack (that is, this is the call that loaded the module in memory).
The LOAD_LIBRARY_TRACER_CALL_STACK table has the REC_ID column that contains the identifier of the routine which corresponds to the call stack entry. Using this identifier you can retrieve information about the routine from the LOAD_LIBRARY_TRACER_META_ROUTINES table.
Note: | The ID and REC_ID columns of the LOAD_LIBRARY_TRACER_xxxx tables are not key columns. They may contain repetitive values. In queries you should use these values along with the INST_ID value (the result set identifier). |
Below is detailed information about the tables.
The INSTANCES table
This table contains the list of exported result sets. Each result set is identified by the INST_ID value.
Field Name | Description |
---|---|
CAPTION | String. The name of the result set. |
COUNTER_DESCRIPTION | String. Reserved. |
COUNTER_FREQUENCY | Decimal. Reserved. |
COUNTER_NAME | String. Reserved. |
INST_ID | Integer. The result set’s identifier. |
The LOAD_LIBRARY_TRACER_CALL_STACK table
This table contains information about the sequence of function calls that led to the loading of modules in memory. Each row in it corresponds to a function call. The data stored in this table is used to display the Call Stack table in the Details panel (see Load Library Tracer - Details Panel).
Field Name | Description |
---|---|
COL__ | Integer. The position of the function calls relative to the calls in the stack. 0 in the column indicates the topmost function in the stack. This is the same value that is displayed in the # column of the Call Stack table in the Details panel. |
COL_CLASS_NAME | String. Specifies the name of the class to which the function belongs. This is the same value that is displayed in the Class Name column of the Call Stack table in the Details panel. |
COL_CODE_TYPE | String. Specifies the type of the function’s code (x86, x64 and so on). This is the same value that is displayed in the Code Type column of the Call Stack table in the Details panel. |
COL_LINE_NO | Integer. Specifies the number of the source line that contains the call to the function. This is the same value that is displayed in the Line No column of the Call Stack table in the Details panel. |
COL_MODULE_NAME | String. Specifies the name of the module that contains the binary code of the function. This is the same value that is displayed in the Module Name column of the Call Stack table in the Details panel. |
COL_NAMESPACE | String. Specifies the name of the namespace to which the function belongs. This is the same value that is displayed in the Namespace column of the Call Stack table in the Details panel. |
COL_SOURCE_FILE | String. Specifies the name of the source file that contains the function’s source code. This is the same value that is displayed in the Source File column of the Call Stack table in the Details panel. |
COL_SOURCE_LINE | Integer. Specifies the line number at which the function’s code starts in the source file. This is the same value that is displayed in the Source Line column of the Call Stack table in the Details panel. |
COL_TOKEN | Integer. Specifies the function’s token. This is the same value that is displayed in the Token column of the Call Stack table in the Details panel. |
COL_UNIT_NAME | String. Specifies the name of the unit that contains the function’s code. This is the same value that is displayed in the Unit Name column of the Call Stack table in the Details panel. |
INST_ID | Integer. The identifier of the result set to which the row belongs. This is the same value as the result set’s INST_ID value in the INSTANCES table. |
ID | Integer. The identifier of the call stack entry that is relative to other entries generated for the same result set. |
PARENT_ID | Integer. The identifier of the module instance (the same value that is stored in the ID column of the LOAD_LIBRARY_TRACER_MODULE_INSTANCES table). |
REC_ID | Integer. The identifier of the function in the LOAD_LIBRARY_TRACER_META_ROUTINES table. |
The LOAD_LIBRARY_TRACER_META_ROUTINES table
This table contains information about routines included in the Load Library Tracer results (see Load Library Tracer - Details Panel).
Field Name | Description |
---|---|
COL_ANALYSIS_RESULT | String. Specifies whether the function was instrumented or not. If it was, the field is empty. Else, the filed contain of the following strings that specify the cause of why the instrumentation failed:
This field is not shown in the Call Stack table of the Details panel. |
COL_CLASS_NAME | String. The type of the class to which the function belongs. |
COL_CODE_TYPE | String. Specifies the type of the function’s code (x86, x64 and so on). |
COL_MODULE_NAME | String. The fully-qualified name of the module that contains the routine’s implementation. |
COL_MODULE_BASE | Decimal. Specifies the address, at which the module that contains the function, was loaded in memory. |
COL_NAMESPACE | String. Specifies the name of the namespace to which the function belongs. |
COL_SOURCE_FILE | String. The name of the file that contains the function’s code. |
COL_SOURCE_LINE | Integer. The number of the source line at which the function’s code starts in the source file. |
COL_PROFILELINES | Integer. Used for helper purposes. Always contains 0. |
COL_ROUTINENAME | String. Specifies the function’s name. This is the same value that is displayed in the Routine Name column of the Call Stack table in the Details panel. |
COL_RVA | Decimal. The relative-virtual address of the function in memory. This value is not displayed in the Call Stack table. |
COL_SYMBOL_MONIKER | String. Used for helper purposes. |
COL_TOKEN | Integer. Specifies the function’s token. This is the same value that is displayed in the Token column of the Call Stack table in the Details panel. |
COL_UNIT_NAME | String. Specifies the name of the unit that contains the function’s code. This value is not displayed in the Call Stack table. |
ID | Integer. The identifier of the row in the table. |
INST_ID | Integer. The identifier of the result set to which the row belongs. This is the same value as the result set’s INST_ID value in the INSTANCES table. |
PARENT_ID | Integer. Not used. |
REC_ID | Integer. The identifier of the function in the result set. |
The LOAD_LIBRARY_TRACER_MODULES table
This table contains a list of modules that were loaded in memory during the profiling. This table is used to display results of the Load Library Tracer profiler in the Report panel (see description of the Load Library Tracer results).
Field Name | Description |
---|---|
COL_IMAGE_SIZE__BYTES_ | Integer. Specifies the size of the module in memory (in bytes). This value is displayed in the Image Size (bytes) column of the Report panel. |
COL_LIBRARY_NAME | String. The name and extension of the module. This value is displayed in the Library Name column of the Report panel. |
COL_LIBRARY_PATH | String. The module’s path. This value is displayed in the Library Path column of the Report panel. |
COL_LOAD_COUNT | Integer. Specifies the number of times the module was loaded in memory during profiling. This value is displayed in the Load Count column of the Report panel. |
COL_PREFERRED_LOAD_ADDRESS | Decimal. The preferred load address that is specified in the module’s header. This value is displayed in the Preferred Address column of the Report panel. |
COL_RELOCATION_COUNT | Integer. The number of times the module was relocated in memory. This value is displayed in the Relocation Count column of the Report panel. |
COL_SIZE__BYTES_ | Integer. Specifies the size of the module’s file in bytes. This value is displayed in the Size (bytes) column of the Report panel. |
COL_STATIC | Integer. Contains -1 or 0 . -1 indicates that the module is loaded in memory at load time (that is, when the application’s module is loaded in memory and the application is starting functioning). 0 indicates that the module is dynamically loaded at run time. For instance, it may be loaded in memory by the LoadLibrary or LoadLibraryEx WinAPI functions. This value is used by the Static column of the Report panel. |
COL_SUCCESSFULLY_UNLOADED | Integer. Contains either -1 , or 0 . Specifies whether the library was unloaded from memory successfully (-1 ) or not (0 ). This value is displayed in the Successfully Unloaded column of the Report panel. |
COL_UNLOAD_COUNT | Integer. Specifies the number of times the module was unloaded from memory during profiling. This value is displayed in the Unload Count column of the Report panel. |
ID | Integer. The identifier of the module within the result set. This is the same value that is displayed in the # column of the Report panel when it is showing the LoadLibrary Tracer results. |
INST_ID | Integer. The identifier of the result set to which the row belongs. This is the same value as the result set’s INST_ID value in the INSTANCES table. |
PARENT_ID | Reserved. |
REC_ID | Integer. The identifier of the row in the table. |
The LOAD_LIBRARY_TRACER_MODULE_INSTANCES table
A DLL can be loaded and unloaded into the application several times. Every time it is loaded, the module instance is created in memory. This table contains information about module instances that were created while the application functions. This table is used to display results of the Load Library Tracer profiler in the Module Instances table of the Details panel (see description of the Load Library Tracer results).
Field Name | Description |
---|---|
COL_DELTA__MS_ | Integer. The number of milliseconds which the module instance remained in memory during profiling. 0 indicates this time period cannot be determined. This value is displayed in the Delta (ms) column of the Module Instances table in the Details panel. |
COL_LOAD_ADDRESS | Decimal. Specifies the address at which the module was loaded in memory. This value is displayed in the Load Address column of the Module Instances table in the Details panel. |
COL_LOAD_TIME__MS_ | Integer. The number of milliseconds passed since the profiling start to the moment, when the module instance was loaded in memory. This value is displayed in the Load Time (ms) column of the Module Instances table in the Details panel. |
COL_RELOCATION_OCCURRED | Integer. Contains either -1 , or 0 . Specifies whether the module was relocated in memory (-1 ), or not (0 ). This value is displayed in the Relocation Occurred column of the Module Instances table in the Details panel. |
COL_THREAD_ID | Integer. Specifies the identifier of the thread, which loaded the module in memory. This value is displayed in the Thread Id column of the Module Instances table in the Details panel. |
COL_UNLOAD_THREAD_ID | Integer. Specifies the identifier of the thread, which unloaded the module from memory. This value is displayed in the Unload Thread Id column of the Module Instances table in the Details panel. |
COL_UNLOAD_TIME__MS_ | Integer. The number of milliseconds passed since the profiling start to the moment, when the module instance was unloaded. This value is displayed in the Unload Time (ms) column of the Module Instances table in the Details panel. |
ID | Integer. The identifier of the module instance within the result set. |
INST_ID | Integer. The identifier of the result set to which the row belongs. This is the same value as the result set’s INST_ID value in the INSTANCES table. |
PARENT_ID | Integer. Specifies the identifier of the module to which the given instance corresponds. This field contains the same values that are stored in the ID field of the LOAD_LIBRARY_TRACER_MODULES table. |
REC_ID | Integer. Specifies the position of the module instance among other instances of the same module. |
The RELATIONS table
This table contains information about parent-child relationships between the database tables.
Field Name | Description |
---|---|
COL_CHILD_TABLE | String. The name of a child table. |
COL_PARENT_TABLE | String. The name of a parent table. If this field contains NULL, it means that the table specified by the COL_CHILD_TABLE is a top-level table. |
ID | Integer. The identifier of a specific relation within the RELATIONS table. |
INST_ID | Integer. The identifier of the INSTANCES table item corresponding to the result set whose data the tables hold. |
See Also
Exporting Profiling Results to Database
Load Library Tracer - Overview
Load Library Tracer - Report Panel
Load Library Tracer - Details Panel
Using Actions
Using Triggers