kmaehashi / XojoInstruments

:negative_squared_cross_mark: Memory Leak Detector for Xojo
https://forum.xojo.com/t/41487
MIT License
22 stars 2 forks source link
xojo

GitHub Actions

Xojo Instruments

Xojo Instruments is a runtime tool to diagnose memory leaks and circular references in Xojo Desktop applications.

https://user-images.githubusercontent.com/939877/144716398-03936a9c-7906-4c75-ab9d-3a7dd54c9866.mov

Quick Start

  1. Download the latest release from Releases.
  2. Open Xojo Instruments project in Xojo IDE in DesktopApp folder.
  3. Copy XojoInstruments folder to your project using the IDE.
  4. Insert the following line to the top of App.Open (or App.Opening) event handler of your project.
XojoInstruments.Start()

Hint: If you are using Xojo 2021 Release 3 or later, you may need to change the Super of XojoInstrumentsDesktopGUI to DesktopWindow.

Basic Usage

Snapshot Capturing

  1. Run your application.
  2. Click Capture in Xojo Instruments window to capture the current runtime status.
  3. Do something in your application.
  4. Click Capture & Compare.
  5. Go to Comparison tab to see what objects has been added/removed.

While running your application under the IDE, you can also view the selected object in IDE by clicking Inspect in IDE.

Reference Graph

Reference Graph represents a dependency (reference hierarchy) between objects. You can possibly find circular reference by using the graph.

  1. Turn on Build Reference Graph and click Capture.
  2. Go to Visualization tab.
  3. (Optional) Turn on Detect circular to automatically highlight circular references in the graph.
  4. Click Render.

While running your application under the IDE, you can view the object in IDE by double-clicking a object node in the graph. You can choose either vis.js (bundled with Xojo Instruments, not supported on Windows) or dot command (GraphViz - needs to be installed separately) to render the graph.

You can also use Backreference tab to see back reference (list of objects referring the target object).

Notes

License

MIT License