QTools 8.1.2
Collection of Host-Based Tools
Loading...
Searching...
No Matches
Revision History

Version 8.1.2, 2025-11-28

The main reason for this release is the upgrade of the QSPY host utility requested by the "power users", who pushed the limits of the tool.

QSPY host utility:

  • Substantially increased internal size limits for various objects:
    • QS_LINE_LEN_MAX (max length of a QSPY line [chars]) from 8192 to 65528
    • QS_DNAME_LEN_MAX (max dictionary name length [chars]) from 64 to 128
    • max number of QS object dictionaries from 256 to 2048
    • max number of QS signal dictionaries from 512 to 8192

Spexygen 2.4.1:

  • Tweaks in the internal Spexygen commands (cosmetic changes in presentation of the traceable items) and the Spexygen CSS styling.

QTools version info:

  • QSpy 8.1.2
  • QUTest 8.1.1
  • QView 8.0.4
  • QClean 8.0.1
  • QCalc 7.3.3
  • Spexygen 2.4.1

Version 8.1.1, 2025-09-30

This QUTools release updates the QUTest test runner (qutest.py) and Spexygen↑ to version 2.4.0.

QSPY host utility:

  • Changed the behavior in the QSPY limited mode not to exit, but to keep running and displaying an error message. This allows any QUTest tests to send the exit command to the test fixture (e.g., host application) and prevents leaving this process running in the background.

QUTest script runner (qutest.py):

Spexygen 2.4.0:

  • Applies the new HTML styling introduced in Doxygen 1.14.0 instead of doxygen-awesome.

GNU-ARM compiler for Windows:

  • updated from version 14.2.rel1 to 14.3.rel1

QTools version info:

  • QSpy 8.1.1
  • QUTest 8.1.1
  • QView 8.0.4
  • QClean 8.0.1
  • QCalc 7.3.3
  • Spexygen 2.4.0

Version 8.1.0, 2025-09-01

This QUTools release updates the QSPY host utility for the matching QP/C and QP/C++ version 8.1.0, as well as adds new features to the QUTest testing harness.

QSpy host application:

  • improved interactive help information (keyboard shortcut 'h')
  • redesigned queries for various objects inside the target and added predefined records for queries about Event Pools. The new queries produce the following information:
    • OBJ_SM: "@timestamp Query-SM Obj=TstAO_inst,State=TstAO_busy"
    • OBJ_AO: "@timestamp Query-AO Pri=1,Que<Use=0,Free=11,Min=11>"
    • OBJ_AO: "@timestamp Query-AO Pri=0,Que<Use=0,Free=0,Min=0>" (special case #1)
    • OBJ_MP: "@timestamp Query-MP Obj=myMPool,Use=0,Free=10,Min=10,Size=8"
    • OBJ_EQ: "@timestamp Query-EQ Obj=TstAO_inst.equeue,Use=0,Free=2,Min=2"
    • OBJ_TE: "@timestamp Query-TE Obj=TstAO_inst.tevt,Rate=0,Sig=TOUT_SIG,Tim=0,Int=0,Flags=0x00"
    • OBJ_MP: "@timestamp Query-EP Id=1,Use=0,Free=10,Min=10,Size=8"
    • OBJ_MP: "@timestamp Query-EP Id=0,Use=0,Free=0,Min=0,Size=0" (special case #2)

Special case #1: for querying AO with "Pri=0" produces the information about the global use of all Active Object event queues in the system (the Que<Use=... field contains the sum of all use entries in all AO queues). This query helps test event queue leaks.

Special case #2: for querying EP with "ID=0" produces the information about the global use of all Event Pools in the system (the Use=... field contains the sum of all use memory blocks in all initialized Event Pools). This query helps test event pool leaks.

QUTest script runner (qutest.py):

QTools version info:

  • QSpy 8.1.0
  • QUTest 8.1.0
  • QView 8.0.4
  • QClean 8.0.1
  • QCalc 7.3.3
  • Spexygen 2.3.0

Version 8.0.4, 2025-06-11

This QUTools release updates the QSPY host utility for the matching QP/C and QP/C++ version 8.0.4, as well as adds new features to the QUTest testing harness and the QView monitoring system.

QSpy host application:

  • restored selected QSpy files needed to build self-hosted tracing applications (e.g., for Linux or Windows with a terminal):
    qspy
    |
    +---include
    |       pal.h
    |       qpc_qs.h
    |       qpc_qs_pkg.h
    |       qspy.h
    |
    +---source
    |       qspy.c
    |
  • added new pre-defined trace record QS_QF_ACTIVE_DEFER_ATTEMPT to QSpy
  • removed from QSpy old code for backward-compatibility with QP versions through 6.5.0, so the oldest still supported QP version is 6.6.0.

QUTest script runner (qutest.py):

New qutestify.py Utility:

  • added the qutestify.py utility to automate the conversion of the raw QSpy output to the test expectations inside QUTest test scripts.

QView monitoring (qviedw.py):

  • added filtering for the new pre-defined trace record QS_QF_ACTIVE_DEFER_ATTEMPT to QSpy

QTools version info:

  • QSpy 8.0.4
  • QUTest 8.0.4
  • QView 8.0.4
  • QClean 8.0.1
  • QCalc 7.3.3
  • Spexygen 2.2.5

Version 8.0.3, 2025-04-07

This QTools release adds the Spexygen component.

Also, this QTools releaase for Windows updates the provided 3rd-party tools as follows:

  • GNU C/C++ toolset for Windows (MinGW 32-bit from version 9.2.0 to version 14.2.0)
  • GNU C/C++ toolset for ARM-EABI (GCC from version 10.3-2021.10 to version 14.2-2024.12.10)
  • Python3 for Windows (from version 3.9.4 to version 3.12.9)
Remarks
Due to the updated tools, this QTools release 8.0.3 for Windows is significantly larger than the previous release 8.0.1.

QTools version info:

  • QSpy 8.0.1
  • QUTest 8.0.1
  • QView 8.0.0
  • QClean 8.0.1
  • QCalc 7.3.3
  • Spexygen 2.2.5

Version 8.0.1, 2024-12-17

QTools version info:

  • QSpy 8.0.0
  • QUTest 8.0.1
  • QView 8.0.0
  • QClean 8.0.1
  • QCalc 7.3.3

Bug fixes (in QUTest):

Features (in QClean):

  • added cleanup of non-ASCII characters in .txt and .dox files

Version 8.0.0, 2024-10-31

This milestone QTools release introduces several new features and updates to the QSPY tracing host utility, QUTest testing harness, and QView monitoring system.

Attention
The various tools in QTools version 8.x generally require the matching QP version 8.x and might not work with the older QP versions.

QTools version info:

  • QSpy 8.0.0
  • QUTest 8.0.0
  • QView 8.0.0
  • QClean 8.0.0
  • QCalc 7.3.3

QSPY host utility
This QUTools release updates the QSPY host utility for the matching QP/C and QP/C++ version 8.0.0, as well as adds new features to the QUTest testing harness and the QView monitoring system.

  • added the extended Target Info trace record produced by QP version 8x
  • updated "dictionary" file format for the extended Target Info
  • changed all produced text files (screen output, dictionary files, sequence diagrams, Matlab files) to consistently use only the Unix end-of-line convention (LF) as opposed to the Windows convention (CRLF). This ensures compatibility between files generated on any host (Windows/Linux/macOS).
  • added license management to improve compliance with the QP framework licensing and the GPL.
  • changed policy of distributing QSPY, which is now available only as compiled executables for Windows, Linux, and macOS. The Windows executable is now built as a 64-bit application.
Note
The new QSPY licensing policy and binary-only QSPY distribution have been introduced in response to the growing infringement on the QP framework licensing↑ as well as non-compliance with the GPL.

QUTest testing harness
This release adds BDD (Behavioral Driven Development) support to QUTest.

See example BDD test script. Here is the generated QUTest output.

QUTest unit testing front-end 8.0.0 running on Python 3.10.1
Copyright (c) 2005-2024 Quantum Leaps, www.state-machine.com
Attaching to QSpy (localhost:7701)... OK

Run ID    : 241011_103618
Target    : remote

==================================[Group  1]==================================
test_sched.py
@uid{TST-QP-QK_02}
This test group verifies the preemption scenarios
in the QK preemptive kernel

[ 1]--------------------------------------------------------------------------
SCENARIO: ao->ao->ao (NO PTS)

   GIVEN: priorities: (1,0), (2,0), (3,0)
    WHEN: post TEST0_SIG to aoB[1]
    THEN: expect the given event exchange
                                                             [ PASS (  0.2s) ]
[ 2]--------------------------------------------------------------------------
SCENARIO: ao->ao->ao (PTS1)

   GIVEN: priorities: (1,3), (2,3), (3,0)
    WHEN: post TEST0_SIG to aoB[1]
    THEN: expect the given event exchange
                                                             [ PASS (  0.3s) ]
[ 3]--------------------------------------------------------------------------
SCENARIO: ao->ao->ao (PTS2)

   GIVEN: priorities: (1,0), (2,3), (3,0)
    WHEN: post TEST0_SIG to aoB[1]
    THEN: expect the given event exchange
                                                             [ PASS (  0.2s) ]

==================================[ SUMMARY ]=================================

Target ID : 241011_100041 (QP-Ver=800)
Log file  :
Groups    : 1
Tests     : 3
Skipped   : 0
Failed    : 0

==============================[  OK  (  0.9s) ]===============================

QView monitoring
This release contains a redesigned QView, which now can be simply imported to the customization Python script, instead of the customization script being called from qview.py. This enables developers to import any other Python modules, which was not possible before.

Note
The redesigned QView requires modifying existing customization scripts. The examples of the new qview customizations are provided in qcp-examples. Here is a snippet from the new customization script:
from qview import QView # import the QView class
from tkinter import *
from tkinter.ttk import * # override the basic Tk widgets with Ttk widgets
class DPP(QView): # inherit and customize the QView class
# on_init() callback
def on_init(self):

Version 7.3.4, 2024-03-21

QTools version info:

  • QSpy 7.3.3
  • QUTest 7.3.4
  • QView 7.3.4
  • QClean 7.3.3
  • QCalc 7.3.3

Bug fixes (in QUTest):

Feature (in QView):


Version 7.3.3, 2024-03-01

QTools version info:

  • QSpy 7.3.3
  • QUTest 7.3.3
  • QView 7.3.3
  • QClean 7.3.3
  • QCalc 7.3.3

This release applies the pylint static analyzer to all Python utilities included in the QTools collection:

The biggest changes for compliance with pylint include migration from %-strings to f-strings (requires Python 3.6 or higher).

QSPY host application:

  • Updated to the latest changes in the QS component in QP 7.3.3.

QClean host application:

  • added new file extension to clean (.cmake, .json, .pyi, .md5)

QTools collection for Windows (qtools\bin directory) now includes:

executables to accompany the new CMake support added in QP/C 7.3.3.


Version 7.3.1, 2023-12-13

QTools version info:

  • QSpy 7.3.1
  • QUTest 7.2.1
  • QView 7.2.0
  • QClean 7.1.3
  • QCalc 7.0.0

Added Python script qspy_kill.py to remotely terminate (kill) the QSPY host application.

QSPY host application:

  • modified the UDP interface to accept the QSPY_DETACH packet with an additional parameter, which forces a clean exit from QSPY

new qspy_kill.py script

  • added new qspy_kill.py Python script to send the QSPY_DETACH-Exit UDP packet to QSPY. The qspy_kill.py script is located in the qtoos/qspy/ directory and can be used in the test automation to remotely terminate QSPY.

Version 7.3.0, 2023-09-12

QTools version info:

  • QSpy 7.3.0
  • QUTest 7.2.1
  • QView 7.2.0
  • QClean 7.1.3
  • QCalc 7.0.0

Updated QSPY Host Application for the latest QP/C/C++ 7.3.0.


Version 7.2.1, 2023-01-11

QTools version info:

  • QSpy 7.2.1
  • QUTest 7.2.1
  • QView 7.2.0
  • QClean 7.1.3
  • QCalc 7.0.0

Introduced the QUTest interactive mode.


Version 7.2.0, 2022-12-22

QTools version info:

  • QSpy 7.2.0
  • QUTest 7.2.0
  • QView 7.2.0
  • QClean 7.1.3
  • QCalc 7.0.0

QUTest testing framework:
This release represents a significant overhaul of the qutest.py test runner.

Attention
The qutest.py script runner qutest.py command-line options has been expanded and changed. Unfortunately, it was not possible to preserve the backwards compatibility with the earlier versions. This means that various Makefiles for building and running tests need to be updated.
  • added generation of test logs (feature required for safety certification efforts)
  • added generation of QSPY logs) (might also be helpful in documenting tests for safety certification.)- changed the format of the output generated by qutest.py to better match the more verbose output generated by test scripts. (The minimal one-line-per-test output could not be reconciled with various notes now generated by test scripts.)- changed the policy of handling assertion failures inside test fixtures (to match changes in QP/C/C++ 7.2.0). Specifically, now an assertion failure causes an automatic reset of the target, without waiting on the test script to trigger the reset. This minimizes the expectations placed on the compromised target system, which might be unable to receive any external commands.- added generation of notes" from tests in the QSPY output to improve its readability and enable easier correlation of the QSPY output to the test scripts. - added new @ref qutest_dsl::note() "note()" command for generating notes from test scripts (These notes appear in the QUTest output and in the QSPY output. Also they are added to the test log files, if logging is enabled.) - added new @ref qutest_dsl::scenario() "scenario()" command (alias for @ref qutest_dsl::test() "test()") to support the BDD (Behavior-Driven Development) style of writing "scenarios". - added new @ref qutest_dsl::tag() "tag()" command (alias for @ref qutest_dsl::note() "note()") to support the BDD (Behavior-Driven Development) style of writing "scenarios". @ref qspy "QSPY host application": - added "Enum Dictionaries" and parsing of the Enum data item - changed dictionaries for QUTest @ref qutest_dsl::command() "command()" from "User" dictionaries to "Enum Dictionaries" for enum-group 7 (#QS_CMD_ENUM). This change affects only QP 7.1.4 and newer. For backwards compatibility, older versions of QP still use the "User" dictionaries for commands. - implemented <a href="https://sourceforge.net/p/qpc/feature-requests/197" >feature request #197</a> for displaying "notes" from QUTest or QView in the QSPY output. This includes rendering special test notes now produced by QUTest 7.2.0. - implemented <a href="https://sourceforge.net/p/qpc/feature-requests/199" >feature request #199</a> for truncating state annotations in sequence diagrams. @ref qview "QView visualization and monitoring": - added generation of "notes" in the QSPY output from the Commands menu. - updated the QView interface to QSPY to toggle various output formats (text, binary, Matlab, sequence) <strong>Documentation</strong> - Updated the QTools documentation. <hr> @section qtools_7_1_4 Version 7.1.4, 2022-12-19 <strong>QTools version info:</strong> - QSpy 7.1.4 - QUTest 7.1.4 - QView 7.1.4 - QClean 7.1.3 - QCalc 7.0.0 <hr> @section qtools_7_1_3 Version 7.1.3, 2022-11-18 <strong>QTools version info:</strong> - QSpy 7.1.2 - QUTest 7.1.2 - QView 7.1.2 - QClean 7.1.3 - QCalc 7.0.0 @ref qspy "QSPY host application": - Implemented feature request <a href="https://sourceforge.net/p/qpc/feature-requests/199" >#199 "Extend state name character length in qspy sequence diagrams."</a>. @ref qclean "QCLEAN host application": - Added new file types and changed some cleaning rules for white-space cleaning. <strong>Documentation</strong> - Modified the <tt>doxygen/</tt> folder for the generation of QM Manual in LaTeX (enables the generation of PDF) <hr> @section qtools_7_1_2 Version 7.1.2, 2022-09-28 <strong>QTools version info:</strong> - QSpy 7.1.2 - QUTest 7.1.2 - QView 7.1.2 - QClean 7.0.0 - QCalc 7.0.0 <strong>QSPY host application:</strong> - Added pre-defined "Scheduler" records: + <tt>QS_SCHED_PREEMPT</tt> replaces deprecated <tt>QS_MUTEX_LOCK</tt> + <tt>QS_SCHED_RESTORE</tt> replaces deprecated <tt>QS_MUTEX_UNLOCK</tt> - Increased the default version for backwards compatibility from 6.6 to 7.0 (@ref qspy_command "command-line option -v", now defaults to 7.0) - Increased the default for QTimeEvt counter size from 2 to 4 (@ref qspy_command "command-line option -C", now defaults to 4). This corresponds to the change of the default value of <tt>QF_TIMEEVT_CTR_SIZE</tt> to 4 in QP/C and QP/C. <hr> @section qtools_7_1_1 Version 7.1.1, 2022-09-03 Slightly restructured QSPY source code to better integrate directly with %QP Applications. Specifically, moved QSPY_cleanup() to qspy.c, so it is available to the applications. <hr> @section qtools_7_1_0 Version 7.1.0, 2022-08-22 <strong>Changes in QSpy</strong> - QSpy 7.1.0 has been updated for QP version 7.1.0. Specifically, new predefined QS trace records have been added: @code{.c} // [71] Semaphore (SEM) records QS_SEM_TAKE, //!< a semaphore was taken by a thread QS_SEM_BLOCK, //!< a semaphore blocked a thread QS_SEM_SIGNAL, //!< a semaphore was signaled QS_SEM_BLOCK_ATTEMPT, //!< a semaphore blocked was attempted /* [75] Mutex (MTX) records QS_MTX_LOCK, //!< a mutex was locked QS_MTX_BLOCK, //!< a mutex blocked a thread QS_MTX_UNLOCK, //!< a mutex was unlocked QS_MTX_LOCK_ATTEMPT, //!< a mutex lock was attempted QS_MTX_BLOCK_ATTEMPT, //!< a mutex blocking was attempted QS_MTX_UNLOCK_ATTEMPT,//!< a mutex unlock was attempted @endcode The following QS trace records are now deprecated: @code{.c} /* [48] old Mutex records, deprecated in QP 7.1.0 QS_MUTEX_LOCK, //!< @deprecated QS_MUTEX_UNLOCK, //!< @deprecated @endcode Also, the following new groups for QS global filter have been added: @code{.c} QS_SEM_RECORDS, //!< Semaphore QS records QS_MTX_RECORDS, //!< Mutex QS records @endcode <strong>Changes in QUTest</strong> - <tt>qutest.py</tt> has been updated to include new QS trace records and global filters for them. The following QS record groups have been added to the "QUTest DSL": @code{.c} GRP_SEM - Semaphore QS records GRP_MTX - Mutex QS records @endcode <strong>Changes in QUView</strong> - <tt>qview.py</tt> has been updated to include new QS trace records and global filters for them. The following QS record groups have been added to QView: @code{.c} GRP_SEM - Semaphore QS records GRP_MTX - Mutex QS records @endcode <hr> @section qtools_7_0_0 Version 7.0.0, 2022-01-31 <strong>Changes in QSpy</strong> - The QSpy 7.0.0 implementation has been refactored to modularize it in order to better support building host-based applications for executing embedded code on the host. Specifically, the new QSpy design better separates the "QSpy parser" of the QS records from the rendering engine and from other functionality of the QSpy host application. - Also, this release introduces semantic coloring of the @ref qspy "QSPY output", which improves its readability. This feature is now controlled by the added @ref qspy_command "command-line option" <tt>-r\<c0|c1|c2\></tt>. <strong>Changes in QUTest</strong> - added command last_rec() to access the last received QS trace record. - improved semantic coloring of the output. <strong>Changes in QCalc</strong> - added "batch mode" in which an expression can be provided on the command-line to <tt>qcalc.py</tt>. - added semantic coloring of the output. <strong>Updated GNU-ARM Toolchain for Windows</strong> - The GNU-ARM toolchain included in QTools for Windows has been updated to the latest Version 10.3-2021.10 released on October 21, 2021. <strong>Updated Python for Windows</strong> - The Python interpreter included in QTools for Windows has been updated to Python 3.10.1 (32-bit). <hr> @section qtools_6_9_3 Version 6.9.3, 2021-04-09 <strong>Changes in QSpy</strong> - Moved function <tt>QSPY_printInfo()</tt> to <tt>qspy.c</tt>, to enable direct QSPY output to the console. Please see also discussion thread [QSPY to console in win32-qv and posix-qv ports] https://sourceforge.net/p/qpc/discussion/668726/thread/92e56e9480), <strong>Changes in QUTest</strong> - Corrected the @ref qutest_command "DEBUG mode", where the Enter key now correctly skips a test. - Added new command include() and provided examples of its use. - Improved error reporting from test scripts. Specifically, the content of the Python stack has been expanded to encompass all the relevant calls. <strong>Changes in QView</strong> - Modified the Python implementation to run correctly after <a href="https://pypi.org/project/qview/" >installing with pip</a>. <strong>Changes in QWin</strong> - Modified the example code to correctly handle regular buttons alongside the "owner-drawn" buttons. <strong>Changes in QCalc</strong> - Modified the Python implementation to run correctly after <a href="https://pypi.org/project/qcalc/" >installing with pip</a>. <strong>Updated Python for Windows</strong> - The Python interpreter in QTools for Windows has been updated to Python 3.9.4. <hr> @section qtools_6_9_2 Version 6.9.2, 2021-01-18 <strong>Changes in QUTest and QView</strong> The UDP socket binding (for connection to QSPY host application) has been changed from "localhost" to "0.0.0.0". This is to improve access to QSPY running on remote hosts. This fixes the following bug: - <a href="https://sourceforge.net/p/qpc/bugs/283/" >bug#283 QUTest 6.9.1. broken</a>. <strong>Changes in QView</strong> - Changed the "Local Filter" dialog box to show "QS_id=..." instead of "AO-prio=..." for QS-IDs above 64. <strong>Added QCalc</strong> - A new version of the popular QCalc Programmer's Calculator has been added again. This version is based on Python (whereas the previous was based on Tcl/Tk). The new version is console-based and, among other enhancements, adds support for a 64-bit range. <strong>Updated GNU-ARM Toolchain for Windows</strong> - The GNU-ARM toolchain in QTools for Windows has been updated to the latest Version 10-2020-q4-major, released on December 11, 2020. <strong>Updated Python for Windows</strong> - The Python interpreter in QTools for Windows has been updated to Python 3.9. <hr> @section qtools_6_9_1 Version 6.9.1, 2020-09-28 The main purpose of this release is to adjust @ref qutest and @ref qview to the new @ref qs_local "QS Local Filter" design implemented in <a href="https://www.state-machine.com/qpc" >QP/C</a> and <a href="https://www.state-machine.com/qpcpp" >QP/C++</a> 6.9.1. Specifically, the loc_filter() and ao_filter() functions in @ref qutest_script "QUTest scripts" and in @ref qview_script "QView scripts" has been re-designed. Additionally, the @ref qview_loc "QView Local Filter menu" has been adjusted accordingly. @note The change in the loc_filter() command has implications for existing @ref qutest_script "QUTest scripts". Specifically, the parameters of loc_filter() are no longer object names but rather "QS-IDs" (see the documentation to loc_filter()). <strong>Changes in QSPY</strong> The @ref qspy "QSPY host application" has been updated to handle the redesigned local-filters and the new predefined #QS_QF_NEW_ATTEMPT trace record. Also, the default version compatibility with the @ref qs "QS target-resident component" (the <tt>-v</tt> @ref qspy_command "command-line option") has been increased from 6.2 to 6.6. Additionally, the QS_U64() and QS_I64() data elements have been made available for all types of CPUs, whereas previously they were available only on 64-bit CPUs (see also <a href="https://sourceforge.net/p/qpc/feature-requests/181" >feature#181</a>). Additionally, QSPY can now format @ref qs_app "application-specific data elements" in hexadecimal. Here are a few examples of QS trace records in the Target and the generated QSPY output: @code{c} QS_U8(QS_HEX_FMT, 0xABU); // --> 0xAB QS_U16(QS_HEX_FMT, 0xDEADU); // --> 0xDEAD QS_U32(QS_HEX_FMT, 0xDEADBEEFU); // --> 0xDEADBEEF QS_U64(QS_HEX_FMT, 0xDEADBEEF12345678LL); // --> 0xDEADBEEF12345678 @endcode <strong>Implemented Feature Requests</strong> - <a href="https://sourceforge.net/p/qpc/feature-requests/181" >feature#181 "use of QS_U64() on 32 bit machine"</a>. <hr> @section qtools_6_9_0 Version 6.9.0, 2020-08-21 This release brings the new @ref qview component, which replaces QSpyView, written originally in Tcl/Tk. The new @ref qview "QView" is written in <strong>Python</strong> (3.3.+) and brings much commonality with the @ref qutest, which has also been restructured and improved. @note Starting with this version, both @ref qview and @ref qutest require <strong>Python3</strong> (3.3+) and are <strong>no longer compatible</strong> with Python2. The support for Tcl/Tk has been dropped entirely in QTools. <strong>Changes in Directory Structure</strong> The new @ref qview "QView" and the updated @ref qutest "QUTest" components are now located directly under the <tt>qtools</tt> folder and are no longer in the <tt>qtools\\qspy</tt> folder. Here is the new <tt>qtools</tt> directory structure: @code{py} qtools/ +---bin/ +---gnu_arm-none-eabi/ +---matlab/ +---mingw32/ +---Python38/ +---qclean/ +---qspy/ +---qutest/ # <== new qutest location +---qview/ # <== new qview location +---qwin/ +---Unity/ @endcode @note The changes in the QTools directory structure have an impact on QUTest testing, because the Makefiles (or any other build tools you might be using) need to be adjusted to the new location of the <tt>qutest.py</tt> script. <strong>Changes in QSPY:</strong> - The @ref qspy "QSPY host utility" has been extended with @ref qspy_seq "Sequence Diagram Output". This new feature replaces the previous support for MscGen and is no longer reliant on any such external tools. - QSPY now recognizes the new QS trace record #QS_QF_RUN. @note The #QS_QF_RUN record is now generated in @ref qutest "QUTest", which requires adjustments in existing @ref qutest_script "test scripts". Specifically, the test scripts that provide their own on_reset() callback must now also call expect_run(). <strong>Bug Fixes:</strong> - <a href="https://sourceforge.net/p/qpc/bugs/153/" >bug#153 QSPY Creating corrupt MscGen files</a>. <hr> @section qtools_6_8_2 Version 6.8.2, 2020-07-17 - Changed the QS trace record name QS_QF_ACTIVE_POST_FIFO to ::QS_QF_ACTIVE_POST and QS_QF_EQUEUE_POST_FIFO to ::QS_QF_EQUEUE_POST. This refactoring now better matches the QP/C/C++ API QACTIVE_POST() and QEQueue_post(). - Fixed errors in the Doxygen documentation, such as: missing documentation for parameters, wrong parameter names, unresolved references, etc. - Applied new, clearer styling to the Doxygen documentation. <hr> @section qtools_6_8_1 Version 6.8.1, 2020-04-04 <strong>Bug Fixes:</strong> - <a href="https://sourceforge.net/p/qpc/bugs/263/" >bug#263 QSPY handles incorrectly empty strings</a>. Also, improved some comments in QUTest scripting documentation (qutest.py). <hr> @section qtools_6_8_0 Version 6.8.0, 2020-03-21 - Adapted the QSPY host application to the changes in QP/C/C++ 6.8.0. - Added color to the qutest.py Python script console output. Specifically, failing test scripts are shown in RED, while passing test scripts are shown in GREEN. <hr> @section qtools_6_7_0 Version 6.7.0, 2019-12-30 This QTools release changes the build process for the QSPY, QCLEAN, and QFSGEN utilities on Windows. Specifically, these programs are now built using Visual Studio 2019 instead of the MinGW compiler for Windows. Also, the source code of all Quantum Leaps utilities has been reviewed and all "unsafe" calls to the standard C library have been replaced with their "safe" counterparts (e.g., strcpy()->strcpy_s(), strcat()->strcat_s(),fprintf()->fprintf_s(), etc.) All these changes were made to avoid the malware warnings that were issued by some anti-virus software against executables built with MinGW. This release also replaces the MinGW toolchain (8.2.0) with the latest mingw32 (9.2.0) installed with MSYS2 (see also https://sourceforge.net/p/qpc/discussion/668726/thread/06b89ba2d5/ ). Finally, this release updates the QWIN Prototyping Toolkit (<tt>qtools\\qwin</tt> directory) to work with the latest Visual Studio 2019 and specifically with the Resource Editor now available in VS 2019. The qwin-demo project has been updated to build with Visual Studio 2019. <hr> @section qtools_6_6_0 Version 6.6.0, 2019-08-30 The main purpose of this release is the change in distribution of the QTools collection, which is now bundled together with the %QP Frameworks (QP/C, QP/C++, and QP-nano) as well as QM into "QP-bundle". This "QP-bundle" provides a single, streamlined, and simplified download and installation of all %QP Frameworks and all the accompanying tools. Also, this release brings significant changes to QTools for Windows. Specifically, the locations of the MinGW compiler and Tcl/Tk have been changed to separate directories (as opposed to being co-located in the <tt>qtools/bin</tt> directory). This facilitates easier upgrades of these third-party tools, and indeed, they have been upgraded in this QTools/Windows release as follows: - MinGW-32-bit <strong>8.2.0</strong>. - Tcl/Tk <strong>8.6</strong>. @note The directory reorganization means that the MinGW compiler is no longer available in the <tt>qtools/bin</tt> directory and therefore the QTools installer for Windows adds to the PATH both the <tt>qtools/bin</tt> and <tt>qtools/MinGW/bin</tt> directories. Also, this release makes the following changes to the @ref qspy "QSPY host application": - The @ref qspy_command "command-line" defaults have been changed such that <tt>qspy</tt> is equivalent to the former <tt>qspy -u -t</tt>. In other words, QSPY by default opens the UDP port and opens the TCP/IP port for the Target connection. - The QSPY host application now supports a new QP-compatibility version 6.6.0, in which the @ref qs_app "Application-Specific QS Trace Records" start at offset 100 instead of 70. This is only activated with the <tt>-v 660</tt> @ref qspy_command "command-line" option, but is in preparation for the future changes in QP/C and QP/C++ frameworks (the upcoming QP/C/C++ 6.6.0). <hr> @section qtools_6_5_1 Version 6.5.1, 2019-06-08 This release adds <strong>debug mode</strong> to @ref qutest_script "QUTest scripting" (in Python). Specifically, you can now provide a special value <tt>DEBUG</tt> to the <tt>qutest.py</tt> Python script launcher, in which case <tt>qutest.py</tt> will start in <strong>debug mode</strong>, in which it will <strong>not</strong> launch the host executable and will <strong>not</strong> reset the Target. Instead, <tt>qutest.py</tt> will wait for the Target reset and other responses from the Target. Additionally, this release improves the @ref install_win32 "QTools installation on Windows". Specifically, the Windows installer now installs Python and has been re-designed to automatically set up the <tt>QTOOLS</tt> environment variable and add <tt>%QTOOLS%\\bin;%QTOOLS%\\python</tt> to the PATH. The uninstaller reverses these changes. <hr> @section qtools_6_4_0 Version 6.4.0, 2019-02-10 This release speeds up the QSPY host application by tweaking the timing constants in the TCP and UDP communication interfaces. The resulting QSPY 6.4.0 runs QUTest tests significantly faster (at least twice as fast) as before. <hr> @section qtools_6_3_8 Version 6.3.8, 2018-12-31 The main purpose of this release is the update of the GNU-ARM toolchain (included in QTools for Windows) to the latest GCC 8. Specifically, this QTools release switches to the official <a href="https://developer.arm.com/open-source/gnu-toolchain/gnu-rm" >GNU-ARM Embedded Toolchain for Arm Cortex-M and Cortex-R processors maintained by ARM Ltd.</a>. @note For consistency with the <a href="https://developer.arm.com/open-source/gnu-toolchain/gnu-rm" >GNU-ARM Embedded Toolchain</a>, the toolchain is now located in the directory <tt>qtools\\gnu_arm-none-eabi</tt> and contains tools with the prefix <strong>arm-none-eabi-</strong>. This is <em>different</em> from the GNU-ARM toolchain used previously (which was located in <tt>qtools\\gnu_arm-eabi</tt> and used the tools prefix <strong>arm-eabi-</strong>). This change requires adjusting existing <tt>Makefiles</tt> and other build commands for the GNU-ARM toolchain, which has been done in the matching <b>QP/C/C++/nano release 6.3.8</b>. Additionally, this release makes further improvements to the "qutest.py" Python interface. Specifically, the skip() command can now be used anywhere in the test scripts to skip the commands. (Previously, the skip() command could only legitimately be used just before the test() command). <hr> @section qtools_6_3_7 Version 6.3.7, 2018-11-19 This release brings a completely redesigned and simplified Python interface for the @ref qutest "QUTest unit testing harness". Specifically, this release adds a new scripting engine called simply @ref qutest_script "qutest.py", which replaces the previous "qspypy". @note The new interface @ref qutest_script "qutest.py" is now the primary supported QUTest scripting interface. The older interfaces, such as TCL ("qutest.tcl") and "qspypy" are still provided in this release, but they are considered <em>obsolete</em> and are <strong>not recommended</strong> for writing new test scripts. The new @ref qutest_script "qutest.py Python interface" is a simple single-threaded application that no longer requires PyTest or other such external Python packages, as did "qspypy" previously. The new Python interface is now also compatible with both Python 2 (2.7+) and Python 3 (3.4+), which means that virtually any contemporary Python version without extensions can be used for running QUTest Python scripts. @note The new Python interface "qutest.py" implements a <strong>different</strong> (simpler) structure of @ref qutest_script "QUTest test scripts" than "qspypy" before. Examples of the new Python @ref qutest_tut "test scripts" are provided in the matching <b>QP/C/C++ release 6.3.7</b>. Additionally, this release fixes the problem in the @ref "QSPY host utility" to correctly format signed integers (I8, I16, I32), which didn't work correctly on 64-bit Linux platforms. Also, the QSPY utility on Windows now uses the newer Windows socket library "ws2_32", which replaced the old "wsock32". Finally, the QTools release for Windows updates the provided MinGW GNU-C/C++ compiler to version 6.3.0. <hr> @section qtools_6_3_6 Version 6.3.6, 2018-10-03 The main purpose of this release is to improve @ref qutest "QUTest" support. Specifically, this release adds a feature of querying and reporting the status of the @ref current_obj() "current objects", such as the current State-Machine (SM), Active-Object (AO), current Memory-Pool (MP), current Event-Queue (EQ), and current Time-Event (TE). The feature impacts the following facilities: - the @ref qspy "QSPY host utility" now processes the new #QS_QUERY_DATA packet - the QUTest <strong>Tcl</strong> scripting implements the new command command <tt>query_curr()</tt> - the QUTest <strong>Python</strong> scripting implements the new command command <tt>qutest.query_curr()</tt>. @note This feature requires matching QP/C/C++ <b>6.3.6</b>. Also, the following bugs related to Python scripting have been fixed in the @ref qtools_qspypy "qspypy 6.3.6" included in this release: - <a href="https://sourceforge.net/p/qpc/bugs/224" >bug#224 QUTest/Python implementation of qutest.expect() is incomplete</a>. This improved <tt>qutest.expect()</tt> implementation more closely matches the behavior of the <tt>expect()</tt> directive from Tcl scripting. The modified <tt>qutest.expect()</tt> compares correctly the <tt>%timestamp</tt> fields (as opposed to ignoring them) and also handles special character sequences '?', '*', and [chars] (like the Tcl <tt>string match</tt> command). - <a href="https://sourceforge.net/p/qpc/bugs/225" >bug#225 QUTest/Python ignores the Target-info configuration</a>. - <a href="https://sourceforge.net/p/qpc/bugs/223" >bug#223 QUTest/Python hangs when attaching to QSPY fails</a>. @note If you already have the previous version of @ref qtools_qspypy "qspypy", you need to re-install it by means of the following command:<br> <br> <tt>pip install %%QTOOLS%\\qspy</tt> Finally, this release of the QTools collection contains the <a href="https://github.com/ThrowTheSwitch/Unity" >Unity unit testing harness (framework)</a>. <hr> @section qtools_6_3_4 Version 6.3.4, 2018-08-16 This release adds official support for writing QUTest test scripts in Python. Also, this release fixes some minor typos in error messages generated by QSpy. <hr> @section qtools_6_3_1 Version 6.3.1, 2018-05-24 This minor release corrects the QSPY utility. Specifically, the @ref qs_app "application-specific output" from the macros QS_FUN(), QS_OBJ(), and QS_SIG() contained extra space (' ') before the function/object/signal name. This extra space has now been removed. @note The change might impact existing QUTest test scripts, which parse the QS_FUN(), QS_OBJ() or QS_SIG() output. @note The corrected QS_FUN(), QS_OBJ(), and QS_SIG() output (without the extra space) is assumed in the QUTest examples that ship in QP/C/C++ 6.3.1. <hr> @section qtools_6_3_0 Version 6.3.0, 2018-05-10 This release simplifies the usage of the QUTest (qutest.tcl) and QSpyView (qspyview.tcl) utilities by reducing the number of parameters required by these scripts. Specifically, the "local_port" parameter might now be omitted, and still every instance of qutest.tcl / qspyview.tcl will be given a unique local UDP port. Additionally, the "port" parameter has been combined with the "host" parameter in the form host[:port]. Here is the new usage of the qutest.tcl script: @code tclsh qutest.tcl [test-scripts] [host_exe] [host[:port]] [local_port] @endcode Here is the new usage of the qspyview.tcl script: @code wish qspyview.tcl [extension_script] [host[:port]] [local_port] @endcode For example, to attach to QSPY running on the host 192.168.1.100 and port 7705, you now can launch these scripts as follows: @code tclsh qutest.tcl *.tcl test_fixture.exe 192.168.1.100:7705 wish qspyview.tcl dpp.tcl 192.168.1.100:7705 @endcode Modified files: - qspy.tcl - qspyview.tcl - qutest.tcl. Also, this release adds the LMFlash utility to QTools for Windows for flash programming of TM4C MCUs. @note The changes should be transparent for most existing QSpyView and QUTest projects (this includes all examples shipped in QP/C and QP/C++). However, projects that run QSPY at non-default UDP ports might need to be adjusted. <hr> @section qtools_6_2_0 Version 6.2.0, 2018-03-13 This release updates the QSPY host utility as well as the <tt>qutest.tcl</tt> and <tt>qspyview.tcl</tt> scripts for the following new QS records introduced in QP/C/C++ 6.2.0: - #QS_QF_ACTIVE_DEFER (replaces QS_QF_ACTIVE_ADD) - #QS_QF_ACTIVE_RECALL (replaces QS_QF_ACTIVE_REMOVE) - #QS_QF_ACTIVE_RECALL_ATTEMPT (replaces QS_QF_EQUEUE_INIT) - QS_QF_RESERVED2 (replaces QS_QF_MPOOL_INIT) - #QS_QF_NEW_REF (replaces QS_QF_TIMEEVT_CTR) - #QS_MUTEX_LOCK (replaces QS_QF_RESERVED1) - #QS_MUTEX_UNLOCK (replaces QS_QF_RESERVED0). The global filter settings in the <tt>qutest.tcl</tt> and <tt>qspyview.tcl</tt> scripts have been updated to the augmented and re-organized QS trace records. Additionally, the new commands post() and publish() have been added to the QUTest "testing DSL" (<tt>qutest.tcl</tt> script). Examples of use of these new commands are provided in the QP/C/C++ directory <tt>\<qpc|qpcpp\>\\examples\\qutest\\defer\\\\endiskip</tt>. <hr> @section qtools_6_1_1 Version 6.1.1, 2018-02-06 This release fixes the following bug in QSPY: - <a href="https://sourceforge.net/p/qpc/bugs/202" >bug#202 QSPY 6.1.0 fails to report target communication errors</a>. Additionally, this release simplifies the format of the external dictionary files so that they can potentially be generated from .map files or .elf files. The new format no longer requires storing the number of entries in the dictionary, and the entries don't need to be sorted by key-value. The new dictionary format also allows adding comments and empty lines between the dictionary blocks. Additionally, the QSPY for POSIX (Linux, MacOS, etc.) corrects the problem with reading input from a file (-f[bin_file] command-line option). Finally, this release increases the QCLEAN maximum size limit to 10MB per file. <hr> @section qtools_6_1_0 Version 6.1.0, 2018-01-20 This release improves the @ref qspy_command "QSPY command-line" option processing by allowing option parameters to be separated by spaces from the option letter (including the optional parameters). For example, the following command-line would not work in the previous version, but will work now: qspy -t 6602 At the same time, the option parameters can follow immediately the option letter, so the following command line will work as well (backwards compatibility): qspy -t6602 This release also improves the handling of external dictionary files in @ref qspy "QSPY host application". Specifically, the <tt>-d</tt> @ref qspy_command "command-line option" has been extended to allow no parameter, in which case an external dictionary file is opened automatically as soon as QSPY receives the target reset or target information. When the <tt>-d \<file\></tt> option is used, the provided dictionary file is used right away, but the dictionary information might get discarded when the target information does not match the configuration and time-stamp obtained from the dictionary file. <hr> @section qtools_6_0_3 Version 6.0.3, 2017-12-12 Fixed compilation and linkage on MacOS for qspy, qclean, qfsgen. Fixed <a href="https://sourceforge.net/p/qpc/bugs/180/" >bug#180 qspyview.tcl for peek is not in sync with the qs_rx parsing of peek</a>. Used unsigned integer math in qcalc.tcl. In QTools for Windows, updated the GNU-ARM toolchain to the latest available GCC 7.2.0 adapted from SysProgs Prebuilt GNU toolchain for arm-eabi: http://gnutoolchains.com/arm-eabi/. <hr> @section qtools_5_9_3 Version 5.9.3, 2017-07-04 Fixed bug#175 "QS_QF_ACTIVE_GET & QS_QF_EQUEUE_GET Record Mislabeled in QSPY Output" (https://sourceforge.net/p/qpc/bugs/175/ ). Added bin/qcalc.tcl to the GIT repository (so that it shows up on GitHub). <hr> @section qtools_5_9_1 Version 5.9.1, 2017-05-19 Added the GNU-ARM (EABI) toolset to the QTools Collection for Windows in the directory <tt>qtools/gnu_arm-eabi</tt>. The addition of the GNU-ARM toolset matches the changes made to Makefiles in QP/C/C++/nano 5.9.2. To reduce the size of the QTools for Windows download, the self-extracting archive file <tt>qtools_win32_\<ver\>.exe</tt> has been prepared with the 7-Zip utility. <hr> @section qtools_5_9_0 Version 5.9.0, 2017-05-19 This release adds the @ref qutest "QUTest" (pronounced 'cutest') Unit Testing support to QP/Spy software tracing. Specifically, this release adds a new headless (console-based) QSPY front-end, which runs unit tests. This release also adapts the @ref qspy "QSPY" host utility to support @ref qutest "QUTest" unit testing. Several new commands have been added and the structure of the code has been expanded. Also, the @ref qspyview "QSpyView" Visualization extension has been moved to the tcl\ sub-directory (the Tcl script tcl\qspyview.tcl). The other Quantum Leaps utilities, like @ref qclean "QClean", @ref qfsgen "QFSGen", and QCalc, have been updated and greatly improved. Finally, all utilities in the QTools collection have been documented in the new QTools Manual, available online at https://www.state-machine.com/qtools. <hr> @section qtools_5_7_0 Version 5.7.0, 2016-09-08 Corrected the QSPY software tracing host application to properly display floating-point numbers in user-defined trace records (QS_F32() and QS_F64() macros). The problem was incompatibility between Microsoft VC++ and GCC floating-point format specifications. In the GCC software build (which produces the QSPY executable in the qtools/bin directory), the MS-VC++ floating point format resulted in all zeros (e.g., 0.0000e+000). @section qtools_5_6_4 Version 5.6.4, 2016-05-04 Added <a target="_blank" rel="noopener" href="https://www.state-machine.com/products/#QWIN">QWIN GUI&uarr;</a> to the collection (sub-directory qwin_gui). Updated the QSPY software tracing host application for the QS trace record name changes introduced in QP 5.6.2. <hr> @section qtools_5_5_0 Version 5.5.0, 2015-08-21 Extended the QSPY software tracing host application for <strong>bi-directional</strong> communication with embedded targets (output and <em>input</em> into the target). Added a @ref qspy_udp "UDP socket" to QSPY, as an extensibility mechanism for adding external unit testing, GUIs and other "front-ends" to control the embedded targets. Provided new QSpyView Tcl/Tk extension of the QSPY host application for control testing, and visualization of the real-time tracing data from embedded targets at real-time. QSpyView enables developers to rapidly build both GUI-based and "headless" scripts for their specific applications (see https://www.state-machine.com/qpc/arm-cm_dpp_ek-tm4c123gxl.html).

Version 5.3.1, 2014-04-21

Corrected the version representation from hex to decimal, to match the change in the QP Framework. The version representation mismatch caused problems in parsing newly modified trace records, when the qspy.c implementation was inserted directly into the projects.


Version 5.3.0, 2014-03-31

Added new trace records to the QSPY host application: QS_QEP_TRAN_HIST, QS_QEP_TRAN_EP, and QS_QEP_TRAN_XP. Changed labels for standard records from Q_ENTRY, Q_EXIT, Q_INIT to ENTRY, EXIT, INIT.


Version 5.1.1, 2013-10-15

Fixed the bug in the QSPY host application, which didn't handle correctly object/functions/signal names longer than 32 characters. The name limit has been raised to 64 characters and this version also correctly truncates the names at the limit without printing any garbage characters.


Version 5.1.0a, 2013-09-18

Modified QSPY utility to support changes in QP 5.1.x:

-improved handling of target resets by adding an empty QS record before the QS_QP_RESET record. The empty record provides the frame delimiter in case the last record in incomplete, so that the following QS_QP_RESET record can be recognized.

-improved handling of internal object/function/signal dictionaries so that symbolic information is displayed for all occurrences of an object/function/signal, for which a dictionary record was received.


Version 5.0.0a, 2013-09-08

Modified the QSPY utility to support changes in QP 5.0.x:

-modified the standard trace records QS_QF_TICK and QS_QF_TIMEEVT_* to contain the tick-rate number.

-added trace records QS_TEST_RUN and QS_TEST_FAIL for unit testing.

-added version compatibility level 5.0, whereas specifying version -v 4.5 runs qspy in compatibility mode with QP 4.5.x.

-added Find And Replace Text (FART) utility for Windows.


Version 4.5.02, 2012-07-21

Re-designed the QSPY interface to support more flexible parsing of the trace records in desktop-based simulations (such as Windows or Qt). Users can provide a custom parsing callback function to QSPY_config(). Also added QS_RESET() macro to reset the internal dictionaries (and other cleanup in the future) when the target resets.


Version 4.5.01, 2012-06-25

Added the QS_USR_DICTIONARY() entry for storing dictionaries of the user trace records. Replaced all remaining sprintf() calls with snprintf().


Version 4.5.00, 2012-05-26

Re-designed the implementation of the QSPY host application so that it can be conveniently included as part of the QP library. This allows direct QS tracing output to the screen for QP Applications running on the desktop. The QSPY application has been converted from C++ to plain C for easier integration with QP/C.


Version 4.3.00, 2011-11-03

This QSPY version matches the changes to the critical section macros made in QP 4.3.00. The QS record names QS_QF_INT_LOCK and QS_QF_INT_UNLOCK have been replaced with QS_QF_CRIT_ENTRY and QS_QF_CRIT_EXIT, respectively.


Version 4.2.04, 2011-09-27

This QSPY version fixes the bug of the incorrect reporting function or object pointers for which the dictionary records are not provided, and which are repeated in one format line (bug #3405904). For example, trace record AO.FIFO would report (incorrectly) as follows:

0014004078 AO.FIFO: Sndr=200009B4 Obj=200009B4 Evt(Sig=00000009,Obj=200009B4, Pool= 0, Ref= 0) Queue(nFree= 5, nMin= 5)

The Sndr= and Obj= are reported to be the same, but they were not.


Version 4.2.01, 2011-08-01

This QSPY version adds the generation of sequence diagrams as files to be processed by MscGen (www.mcternan.me.uk/mscgen/). This version adds the option -g<msc_file> to generate a .msc file.

Also, this version of QSPY for Windows allows COM ports larger than COM9.


Version 4.2.00, 2011-07-13

This QSPY version matches the changes made to QS target code in QP/C/C++ 4.2.xx. These changes include sending the additional byte of sender priority in trace records:

  • QS_QF_ACTIVE_POST_FIFO,
  • QS_QF_ACTIVE_POST_LIFO.

Additional changes include sending the poolID and refCtr of events in two bytes instead of just one byte. The changes affect the following trace records:

  • QS_QF_ACTIVE_POST_FIFO,
  • QS_QF_ACTIVE_POST_LIFO,
  • QS_QF_ACTIVE_GET,
  • QS_QF_EQUEUE_GET,
  • QS_QF_ACTIVE_GET_LAST,
  • QS_QF_EQUEUE_GET_LAST,
  • QS_QF_EQUEUE_POST_FIFO,
  • QS_QF_EQUEUE_POST_LIFO,
  • QS_QF_PUBLISH,
  • QS_QF_GC_ATTEMPT, and
  • QS_QF_GC.

Also, for compatibility with QP 4.2.xx, this version changes the defaults as follows:

signal size (-S) from 1 byte to 2 bytes, and

baud rate (-b) from 38400 to 115200.

This version adds the following trace record:

QS_QF_TIMEEVT_CTR.

The version also adds compatibility with 64-bit targets (such as 64-bit linux). This version can accept 8-byte pointers (both object pointers and function pointers) as well as 64-bit integers sent in user-defined trace records.

This version also adds the hex format for uint32_t integers sent in user-defined trace records.

Finally, this version adds a command-line option -v to specify the corresponding QP version running on the target. The default version is -v4.2, but specifying version -v4.1 or -v4.0 will switch QSPY into backwards-compatibility mode with the earlier versions of QP.


Version 4.1.06, 2011-02-09

This is the initial standalone release of the QSPY host pplication. QSPY is still available in the QP/C and QP/C++ distributions, but other rapid prototyping platforms (such as mbed or Arduino) do not use the standard QP distributions and have no easy access to the QSPY tool. For these users, this pre-compiled standalone release is more convenient.