Migrating from AQTime to Software Verify Tools

SmartBear has confirmed end-of-life for AQTime in June/July 2026. This guide maps each AQTime profiler to its Software Verify equivalent and describes the migration path for each.

See also: AQTime is shutting down for a summary of what changes and what you gain.


Quick Reference

AQTime Profiler Software Verify Replacement Notes
Allocation Profiler Memory Validator Replaces + extends
Resource Profiler Memory Validator Replaces + extends
Reference Count Profiler Memory Validator Available, off by default
Coverage Profiler Coverage Validator Direct replacement
Light Coverage Profiler Coverage Validator One tool, one setting
Performance Profiler Performance Validator Direct replacement
Sampling Profiler Performance Validator (sampling mode) PV has both instrumented and sampling modes
Function Trace Bug Validator (beta, 32-bit only) Partial — 64-bit in development
Failure Emulator No equivalent yet Fault Validator is planned
Exception Trace Exception Tracer Handled at the debug layer
Load Library Tracer Memory Validator / Bug Validator DLL tracking built in
BDE SQL Profiler N/A BDE is deprecated
Static Analysis Profiler N/A Use your IDE or a dedicated static analyser
Unused VCL Units N/A Handled by compiler warnings
Sequence Diagram Link N/A UML tooling is now IDE-native
Platform Compliance N/A Use SDK targeting / compiler flags

Memory Analysis

AQTime split memory tracking across three separate profilers: Allocation Profiler, Resource Profiler, Reference Count Profiler. Memory Validator covers all three in one tool.

Allocation Profiler → Memory Validator

AQTime’s Allocation Profiler tracked heap memory allocations and deallocations — detecting leaks, recording call stacks, reporting object counts and block sizes. It filtered standard MFC and VCL allocations automatically.

One significant difference: in AQTime, heap allocation tracking was off by default. You had to enable “Check system memory allocations” in the profiler settings before allocation data appeared. Many users were unaware of this and received incomplete results.

Memory Validator has allocation tracking on by default. Every heap allocation and deallocation is captured immediately when you start a session.

Resource Profiler → Memory Validator

AQTime’s Resource Profiler tracked: fonts, brushes, bitmaps, registry handles, COM objects, print spooler handles, and similar Windows resources.

Memory Validator tracks these resources, plus GDI handles, Windows kernel handles, and .NET handles that AQTime’s Resource Profiler did not separately cover. The scope is broader by default.

AQTime required project preparation to enable resource tracking — it was not automatic. Memory Validator requires no project preparation; resource and handle tracking is active from the first run.

Reference Count Profiler → Memory Validator (COM tracking)

AQTime’s Reference Count Profiler monitored COM interface AddRef and Release calls to detect unreleased references and premature releases.

Memory Validator includes COM reference count tracking. It is off by default (consistent with it being a specialised capability most developers don’t need). Enable it in Memory Validator’s settings if COM reference counting is part of your workflow.

What you gain in migration:

  • No project preparation required
  • Allocation tracking on by default
  • GDI and Windows kernel handle tracking included
  • .NET handle tracking included
  • MSVC support through VS 2026 (vs AQTime’s VS 2010 ceiling for native code)
  • No out-of-memory risk from the tool itself during profiling

Code Coverage

AQTime offered two separate coverage tools (Coverage Profiler and Light Coverage Profiler) to handle the speed/completeness tradeoff. Coverage Validator handles this with a single instrumentation mode setting.

Coverage Profiler → Coverage Validator (default mode)

AQTime’s Coverage Profiler provided routine-level and line-level coverage with hit counts, partial line handling (short-circuit && etc.), and multi-run merging.

Coverage Validator provides routine-level and line-level coverage with hit counts, partial line handling, and multi-run merging. The default instrumentation mode (“Complete but faster”) captures full line coverage with visit counts at practical speed.

Light Coverage Profiler → Coverage Validator (lighter instrumentation mode)

AQTime’s Light Coverage Profiler was designed for regression runs where speed mattered more than completeness. It omitted hit counts, omitted partial line tracking.

Coverage Validator’s “Incomplete but faster” mode covers the same use case: skips very short lines (under 5 bytes), counts each line once rather than on every visit. Use this mode for CI/CD pipeline runs and large regression suites where throughput matters.

Coverage Validator’s four instrumentation modes:

Mode Short lines Visit counting Best for
Complete but faster Included Once per line Default — full coverage, practical speed
Complete but slower Included Every visit Maximum accuracy, slower
Incomplete but faster Skipped Once per line Regression pipelines, CI/CD
Incomplete but slower Skipped Every visit Rarely needed

Settings location: Settings > Data Collection Settings > Instrumentation Detail

Caveat for “Complete” modes: Cannot run simultaneously with a debugger attached. MAP files for release builds suppress breakpoint hooks.

What you gain in migration:

  • One product instead of two
  • Single setting to adjust the speed/completeness tradeoff
  • MSVC support through VS 2026 (vs AQTime’s ceiling)
  • Full GCC, Clang, Delphi support
  • Session merging for accumulating coverage across test suites

Performance Profiling

AQTime offered a Performance Profiler and a Sampling Profiler. Performance Validator provides both profilers in one tool.

Performance Profiler → Performance Validator

AQTime’s Performance Profiler was an instrumented profiler tracking call counts, elapsed time, and a range of CPU and memory counter metrics. It had known issues: BSOD risk when certain counters were used with the Windows DDK installed; counter unavailability on some CPU models, virtual machines, and SpeedStep hardware; a required hotfix (KB896256) for accurate timing on multi-core Windows XP SP2.

Performance Validator is an instrumented profiler with a sampling option. Instrumented mode gives exact call counts, elapsed time, and complete call graphs at routine and line level. It works with any application where debug information is available — MSVC from VC6 through VS 2026, GCC (all versions), Clang, Delphi, Rust.

Sampling Profiler → Performance Validator (sampling mode)

AQTime’s Sampling Profiler was unmanaged-code only, did not track call hierarchy, and recommended quad-core hardware for accuracy.

Performance Validator includes a sampling mode alongside its instrumented mode. Use instrumented mode for exact call counts and full call graphs; use sampling mode when you want lower overhead profiling.

What you gain in migration:

  • No BSOD risk from hardware performance counters
  • No counter availability caveats for VMs or modern hardware
  • Full MSVC version support (VS 6–2026 — including all the Visual Studio versions from 2012 that AQTime didn’t support)
  • .NET supported alongside native code
  • No quad-core accuracy requirement

Partial Replacements

Function Trace → Bug Validator (partial)

AQTime’s Function Trace profiler logged every function call entry with actual parameter values — useful for exact execution trace debugging without modifying source code. It supported 32-bit and 64-bit native and managed code.

Bug Validator records parameter values, local variable values, and register values at every function entry, function exit, and line visit. It covers more than Function Trace. Current limitation: Bug Validator is in beta and 32-bit only. 64-bit support is in development.

For 32-bit native code: Bug Validator is the replacement. For 64-bit or managed code: wait for the 64-bit release, or use a conditional breakpoint approach in your debugger in the interim.


No Replacement (honest gaps)

Failure Emulator

AQTime’s Failure Emulator injected controlled failures into:

  • COM API calls (absent/unregistered server)
  • File and folder access (nonexistent file, read-only disk, full disk)
  • Memory allocation (heap and virtual memory exhaustion — unmanaged code only)
  • Registry access (absent key, read-only key, no permissions)

This allows systematic testing of an application’s error-handling paths.

We do not have a direct equivalent. Fault Validator — which would do this using the same Win32 API hooking infrastructure we already use across our tools — is planned. If fault injection was a core part of your AQTime workflow, we don’t have a replacement today.


Compiler Support Comparison

Compiler / Environment AQTime (native) Software Verify
.NET managed VS 2005 through 2017 VS 2002 through 2026
MSVC / Visual C++ VC4 through VS 2010 VC6 through VS 2026
GCC / MinGW GCC 2.95 only All versions
Clang Not supported Supported
C++Builder Through 10.4 Sydney 5.5 to current
Delphi Through 10.4 Sydney 5.0 to current
Rust Not supported Supported (MV heap caveat for custom allocators)
Fortran Supported Supported
VB6 Supported Supported
Java JRE 1.5–1.7 Not supported
UWP / Windows Store Not supported Not supported

Getting Started

Suites

AQTime was a single licence covering memory, coverage, and performance. Software Verify offers suites that match this model:

Support Suite — Memory Validator, Performance Validator.

QA Suite — Memory Validator, Coverage Validator, Performance Validator. Replaces AQTime’s three core capabilities in one purchase.

Developer Suite — Memory Validator, Coverage Validator, Performance Validator, Thread Validator. Adds thread analysis and deadlock detection to the QA Suite tool set.

Individual tools

If you only need one or two of the tools, each is available separately as a fully functional 30-day trial:

If you have questions about specific AQTime workflows or need help mapping your setup, contact us.


AQTime 8 documentation remains available at support.smartbear.com/aqtime/docs/ until the end of June 2026.

Fully functional, free for 30 days