Skip to content

Gather and imploade $_GET request to load tracy_bar JS content #352

@nemeth-it

Description

@nemeth-it

Version: 2.5.5

Bug Description

In my environment Tracy only changes into the development-mode, when running in the test-environment or a specific get-parameter with value is given.

The issue here isn't that tracy doesn't starts, but that the JS file which is necessary to init tracy_bar doesn't get loaded, because the target JS file seems empty.

https://domain.tld?_tracy_bar=js&v=2.5.4&XDEBUG_SESSION_STOP=1

The reason behind that is that Tracy doesn't know that it can also be toggled into development-mode by a specific GET-parameter. Why the JS file should be load with the user-specific GET-parameters, like:

https://domain.tld?dump&_tracy_bar=js&v=2.5.4&XDEBUG_SESSION_STOP=1

Steps To Reproduce

Put Tracy declaration and initialization behind a $_GET condition, it will cause Tracy to load the dump-results for the bar, but not load the JS-script which is necessary to start the whole tracy_bar.

Hint: In my cases the dump/debug-parameter requires a dynamic-hash value, but for better understanding I've made this example just with an simple isset().

use Tracy\Debugger;

# Initial DEVELOPMENT declaration
$debugStatus = 'enable';
$debugMode = Debugger::PRODUCTION;
$logDirectory = __DIR__ . "/../../../log/$environmentScopeName";

# Conditional DEVELOPMENT declaration
if( isTestEnvironment() || isset($_GET['dump']) ) {
    $debugStatus = 'enable';
    $debugMode = Debugger::DEVELOPMENT;
    Debugger::$strictMode = true;
}

# Traycy Debugger Configuration
Debugger::$maxDepth = 0; // default: 3
Debugger::$maxLength = 10240; // default: 150
. . .
Debugger::$logSeverity = E_ALL | E_NOTICE | E_WARNING;

# Start Tracy
Debugger::$debugStatus($debugMode, $logDirectory);

Expected Behavior

Detecting non-tracy get-parameters and including them into url to load the tracy_bar JS content.

Possible Solution

  1. Additional function in constructor to get all non-tracy-specfic $_GET propertys and values.
  2. Another function to implode them into url when loading tracy_bar JS.

Something like <?= implode_user_specific_get() ?> in /vendor/tracy/tracy/src/Tracy/assets/Bar/loader.phtml:

<script src="<?= Helpers::escapeHtml($baseUrl) ?>?<?= implode_user_specific_get() ?>_tracy_bar=js&amp;v=<?= urlencode(Debugger::VERSION) ?>&amp;XDEBUG_SESSION_STOP=1" data-id="<?= Helpers::escapeHtml($contentId) ?>"<?= $nonceAttr ?>></script>

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions