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.
- In Solution Explorer, right click your custom criteria project and select Set as Startup Project.

- Select your project's Debug Properties to open the Launch Profiles UI.

- Create a new profile of type Executable.

- Set the Executable path to: <InstallDir>\Executable\Solver\HyperX.Solver.exe

- 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)

- Set the Working directory to: <InstallDir>\Executable\Solver

- Review and confirm the full debug configuration.

- Select the newly created debug profile.

- Set a breakpoint in your criterion code.

- Start debugging via Debug -> Start Debugging.

- Inspect variables while debugging

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):
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