# Debug & Hata Ayıklama Modu

TYPO3 v13'te hata ayıklama modunun aktifleştirilmesi, debug araçları ve geliştirme ortamı yapılandırmasını kapsar.

---

## TYPO3 Context (Ortam Bağlamı)

TYPO3 üç ana bağlamda çalışabilir:

| Bağlam | Açıklama |
|--------|----------|
| `Production` | Canlı ortam (varsayılan) |
| `Development` | Geliştirme ortamı |
| `Testing` | Test ortamı |

### Bağlam Ayarlama

```bash
# DDEV ortamında (.ddev/config.yaml)
web_environment:
  - TYPO3_CONTEXT=Development
```

```php
// .htaccess veya vhost ile
SetEnv TYPO3_CONTEXT Development

// veya alt bağlam ile
SetEnv TYPO3_CONTEXT Development/Docker
```

---

## Debug Modu Aktifleştirme

### config/system/additional.php

```php
<?php

$context = \TYPO3\CMS\Core\Core\Environment::getContext();

if ($context->isDevelopment()) {
    // Hata görüntüleme
    $GLOBALS['TYPO3_CONF_VARS']['SYS']['displayErrors'] = 1;
    $GLOBALS['TYPO3_CONF_VARS']['SYS']['devIPmask'] = '*';
    $GLOBALS['TYPO3_CONF_VARS']['SYS']['exceptionalErrors'] = E_ALL;

    // Debug çıktısı
    $GLOBALS['TYPO3_CONF_VARS']['FE']['debug'] = true;
    $GLOBALS['TYPO3_CONF_VARS']['BE']['debug'] = true;

    // Cache kapatma (dikkat: performansı düşürür)
    foreach ($GLOBALS['TYPO3_CONF_VARS']['SYS']['caching']['cacheConfigurations'] as $cacheName => &$cacheConfig) {
        $cacheConfig['backend'] = \TYPO3\CMS\Core\Cache\Backend\NullBackend::class;
    }
    unset($cacheConfig);

    // Deprecation logları
    $GLOBALS['TYPO3_CONF_VARS']['LOG']['TYPO3']['CMS']['deprecations']['writerConfiguration'] = [
        \Psr\Log\LogLevel::NOTICE => [
            \TYPO3\CMS\Core\Log\Writer\FileWriter::class => [
                'logFileInfix' => 'deprecations',
            ],
        ],
    ];
}
```

---

## Fluid Debug

### Tüm Değişkenleri Görüntüle

```html
<!-- Tüm mevcut değişkenler -->
<f:debug>{_all}</f:debug>

<!-- Belirli bir değişken -->
<f:debug>{data}</f:debug>
<f:debug>{settings}</f:debug>

<!-- Inline sözdizimi -->
{myVariable -> f:debug()}

<!-- Derinlik sınırlı -->
<f:debug maxDepth="3">{complexObject}</f:debug>
```

### Koşullu Debug

```html
<f:if condition="{settings.debug}">
    <div style="background:#ffe; border:2px solid #cc0; padding:10px; margin:10px;">
        <f:debug>{_all}</f:debug>
    </div>
</f:if>
```

---

## TypoScript Debug

### Yapılandırma Görüntüleme

```typoscript
# TypoScript Object Browser'da kontrol edin
# Backend > Template > TypoScript Object Browser

# Debug çıktısı (frontend'de)
page.10.stdWrap.debugData = 1
```

### Admin Panel

```typoscript
# Admin Panel'i aktif et (geliştirme ortamı)
config.admPanel = 1
```

Admin Panel'i aktif etmek için:
1. Backend kullanıcısı olarak giriş yapın
2. User Settings > Admin Panel bölümünü aktif edin
3. Frontend'de alt kısımda Admin Panel görünür

---

## PHP Debug Araçları

### DebugUtility

```php
use TYPO3\CMS\Core\Utility\DebugUtility;

// Değişken debug
DebugUtility::debug($variable, 'Variable Label');

// Backtrace
DebugUtility::debugTrail();
```

### Xdebug

DDEV'de Xdebug aktifleştirme:

```bash
# Xdebug'ı aktif et
ddev xdebug on

# Xdebug'ı kapat
ddev xdebug off

# Xdebug durumunu kontrol et
ddev xdebug status
```

IDE yapılandırması (VSCode `launch.json`):

```json
{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Listen for Xdebug",
            "type": "php",
            "request": "launch",
            "port": 9003,
            "pathMappings": {
                "/var/www/html": "${workspaceFolder}"
            }
        }
    ]
}
```

---

## Log Dosyaları

```bash
# TYPO3 log dosyalarını kontrol et
ddev exec tail -f var/log/typo3_*.log

# Belirli bir log dosyası
ddev exec tail -100 var/log/typo3_deprecations_*.log

# Web sunucu logları
ddev logs -s web -f

# Tüm DDEV logları
ddev logs -f
```

---

## Sorun Giderme Kontrol Listesi

1. **Beyaz ekran?** → `displayErrors` aktif mi kontrol et
2. **Template görünmüyor?** → Cache temizle + TypoScript kontrol et
3. **Extension çalışmıyor?** → `extension:setup` çalıştır
4. **404 hatası?** → Site configuration + slug kontrol et
5. **Yavaş sayfa?** → Admin Panel > Info ile ölç

---

## Kaynaklar

- [TYPO3 Debugging](https://docs.typo3.org/m/typo3/reference-coreapi/main/en-us/ApiOverview/Debugging/)
- [DDEV Xdebug](https://ddev.readthedocs.io/en/stable/users/debugging-profiling/step-debugging/)
