HyperX.Solver.Api 1.23.0
The HyperX Solver Application Programming Interface
Loading...
Searching...
No Matches
Debugging

HyperX Solver is a command line executable. When HyperX runs Solver to generate margins, it generates an input file and calls this executable. A debugger can call this executable directly to debug custom analysis criteria.

Solver CLI arguments:

HyperX.Solver.exe <input file> <status file> <output file> <working folder> <package cache directory> <input file format> <output file format> <output mode> <run name> <number of threads>

The following steps describe how to debug custom analysis criteria using Visual Studio 2022. The general process is similar in other IDEs and debuggers.

  1. In Solution Explorer, right click your custom criteria project and select Set as Startup Project.
    Step 1 Image

  2. Select your project's Debug Properties to open the Launch Profiles UI.
    Step 2 Image

  3. Create a new profile of type Executable.
    Step 3 Image

  4. Set the Executable path to: <InstallDir>\Executable\Solver\HyperX.Solver.exe
    Step 4 Image

  5. Enter the Command-line arguments:
    • <input file> — Path to the solver_input.msgpack file ("<ProjectWorkingFolder>\Solver\solver_input.msgpack")
    • <status file> — Path to your solver_log.txt file ("<ProjectWorkingFolder>\Solver\solver_log.txt")
    • <output file> — Path to your solver_output.msgpack file ("<ProjectWorkingFolder>\Solver\solver_output.msgpack")
    • <working folder> — Path to your overall temp directory ("<ProjectWorkingFolder>")
    • <package cache directory> — Path to your package cache directory ("C:\HyperX\Packages\Cache")
    • <input file format> — Specifies the input file format. Must be set to: 3 (MessagePack)
    • <output file format> — Specifies the output file format. Must be set to: 4 (SQL)
    • <output mode> — Specifies the output mode: 0 (Overwrite) or 1 (Append)
    • <run name> — User-defined name for the Solver run
    • <number of threads> — Number of threads to use (must be ≥ 1)
      Step 5 Image

  6. Set the Working directory to: <InstallDir>\Executable\Solver
    Step 6 Image

  7. Review and confirm the full debug configuration.
    Step 7 Image

  8. Select the newly created debug profile.
    Step 8 Image

  9. Set a breakpoint in your criterion code.
    Step 9 Image

  10. Start debugging via Debug -> Start Debugging.
    Step 10 Image

  11. Inspect variables while debugging
    Step 11 Image

The following Python script can be run from the HyperX Script Runner. Copy and paste the script output into the Visual Studio debugger Command-line arguments field (Step 5 above) to debug the last Solver run of a database.

PrintSolverArgs.py:

import os
def Run(database):
# Build Solver args in required format
working_folder = database.ActiveProject.WorkingFolder
solver_input = os.path.join(working_folder, "Solver", "solver_input.msgpack").replace('\\', '\\\\')
solver_output = solver_input.replace("input", "output")
solver_log = solver_input.replace("input.msgpack", "log.txt")
package_cache = "C:\\\\HyperX\\\\Packages\\\\Cache"
working_folder = working_folder.replace('\\', '\\\\')
args = f'"{solver_input}" "{solver_log}" "{solver_output}" "{working_folder}" "{package_cache}" 3 4 0 "solver run" 1'
print("Solver debug args:")
print(args)

Possible PrintSolverArgs.py Output:

Solver debug args:
"C:\Users<username>\AppData\Local\Programs\HyperX\Project_9C2033E2\Solver\solver_input.msgpack" "C:\Users<username>\AppData\Local\Programs\HyperX\Project_9C2033E2\Solver\solver_log.txt" "C:\Users<username>\AppData\Local\Programs\HyperX\Project_9C2033E2\Solver\solver_output.msgpack" "C:\Users<username>\AppData\Local\Programs\HyperX\Project_9C2033E2" "C:\HyperX\Packages\Cache" 3 4 0 "solver run" 1