You can debug a lot of Magento 2 functions/logic with the help of only one script!
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
use Magento\Framework\App\Bootstrap;
require 'app/bootstrap.php';
$bootstrap = Bootstrap::create(BP, $_SERVER);
$objectManager = $bootstrap->getObjectManager();
$state = $objectManager->get(Magento\Framework\App\State::class);
$state->setAreaCode(\Magento\Framework\App\Area::AREA_FRONTEND);
$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
/** @var Magento\Store\Model\App\Emulation $emulation */
$emulation = $objectManager->create('Magento\Store\Model\App\Emulation');
$emulation->startEnvironmentEmulation(1, \Magento\Framework\App\Area::AREA_FRONTEND, true);
foreach (range(1, 1) as $shipId) {
/** @var Magento\Sales\Model\ResourceModel\Order\Shipment\Collection $shipmentCollection */
$shipmentCollection = $objectManager->get(\Magento\Sales\Model\ResourceModel\Order\Shipment\Collection::class);
/** @var Magento\Sales\Model\Order\Shipment $shipment */
$shipment = $shipmentCollection->getItemById($shipId);
//$shipment->setSendEmail(1);
/** @var Magento\Sales\Model\Order\Email\Sender\ShipmentSender $sender */
$sender = $objectManager->get(Magento\Sales\Model\Order\Email\Sender\ShipmentSender::class);
$sender->send($shipment);
/** @var \Magento\Sales\Model\ResourceModel\Order\Collection $orderCollection */
$orderCollection = $objectManager->get(\Magento\Sales\Model\ResourceModel\Order\Collection::class);
/** @var Magento\Sales\Model\Order\Email\Sender\OrderSender $sender */
$sender = $objectManager->get(Magento\Sales\Model\Order\Email\Sender\OrderSender::class);
//$order=$orderCollection->getItemById(26);
//$sender->send($shipment->getOrder());
//print_r($order->debug());
//echo "\n".$order->getCustomerEmail();
}
$emulation->stopEnvironmentEmulation();
echo "Done";