Converting debug_backtrace to a stack trace

October 2, 2020 ยท View on GitHub

There is a function on a span to set a stack trace but it uses a different format from PHP's debug_backtrace().

In order to convert between the two you can use the setDebugBacktrace function. It will convert details in the background and set the stack trace for you.

A simple example would be:

$spanSt->setDebugBacktrace();

Example Code

use Nipwaayoni\Helper\StackTrace;

// create the agent
$agent = (new \Nipwaayoni\AgentBuilder())
    ->withConfig(new Nipwaayoni\Config(['serviceName' => 'examples']))
    ->build();

// Span
// start a new transaction
$parent = $agent->startTransaction('POST /auth/examples/spans');

// burn some time
usleep(rand(10, 25));

// Create Span
$spanParent = $agent->factory()->newSpan('Authenication Workflow', $parent);
// $parent->incSpanCount();
$spanParent->start();

// Create another Span that is a parent span
$spanSt = $agent->factory()->newSpan('Span with stacktrace', $spanParent);
// $parent->incSpanCount();
$spanSt->start();

// burn some fictive time ..
usleep(rand(250, 350));
$spanSt->setDebugBacktrace();

$spanSt->stop();
$agent->putEvent($spanSt);

$spanParent->stop();

// Do some stuff you want to watch ...
usleep(rand(100, 250));

$agent->putEvent($spanParent);

$agent->stopTransaction($parent->getTransactionName());

// Force manual flush if needed
// $agent->send();