init elowdb go-port commit

This commit is contained in:
41 changed files with 7273 additions and 0 deletions

205
USAGE.md Normal file
View File

@@ -0,0 +1,205 @@
# Инструкция по использованию отладочных инструментов LineDB
## 🎯 Быстрый старт
### 1. Отладка в VS Code (рекомендуется)
1. Откройте проект в VS Code
2. Нажмите `F5` или выберите "Run and Debug" в боковой панели
3. Выберите одну из конфигураций:
- **Debug LineDB Debug App** - отладка основного приложения
- **Debug LineDB Simple Test** - отладка простого теста
- **Debug LineDB Tests** - отладка тестов
- **Debug LineDB Example** - отладка примера
### 2. Отладка через командную строку
```bash
# Отладка основного приложения
make debug-simple
# Отладка основного теста
make debug-main
# Отладка тестов
make debug-tests
# Отладка примера
make debug-example
```
### 3. Отладка через скрипт
```bash
# Отладка основного приложения
./debug.sh simple
# Отладка основного теста
./debug.sh main
# Отладка тестов
./debug.sh tests
# Отладка примера
./debug.sh example
```
## 📁 Файлы для отладки
### debug_app.go
Основной файл для отладки с подробной информацией:
- Инициализация базы данных
- Вставка данных
- Чтение данных
- Фильтрация
- Обновление данных
- Подробные логи каждого шага
### debug_main.go
Альтернативный тест с базовой функциональностью
### simple.go
Простой тест для быстрой проверки
### tests/linedb_test.go
Официальные тесты проекта
## 🔧 Команды отладки
### VS Code
- `F5` - Запуск отладки
- `F9` - Установить/снять точку останова
- `F10` - Следующая строка (Step Over)
- `F11` - Войти в функцию (Step Into)
- `Shift+F11` - Выйти из функции (Step Out)
- `Ctrl+Shift+F5` - Перезапуск отладки
- `Shift+F5` - Остановка отладки
### Delve (dlv)
```bash
# Основные команды
break main.main # Точка останова в main
break pkg/linedb/line_db.go:30 # Точка останова на строке 30
continue # Продолжить выполнение
next # Следующая строка
step # Войти в функцию
print variable # Вывести значение переменной
vars # Показать все переменные
goroutines # Показать горутины
stack # Показать стек вызовов
quit # Выйти из отладчика
```
## 🎯 Ключевые точки останова
### Рекомендуемые места для установки точек останова
```go
// Инициализация базы данных
pkg/linedb/line_db.go:61
// Вставка данных
pkg/linedb/line_db.go:140
// Чтение данных
pkg/linedb/line_db.go:123
// Фильтрация
pkg/linedb/line_db.go:343
// Обновление данных
pkg/linedb/line_db.go:307
// Удаление данных
pkg/linedb/line_db.go:330
```
## 🐛 Отладка проблем
### Программа зависает
```bash
# Проверьте кэш и очистите данные
make clean
make run-simple
```
### Ошибки при работе с файлами
```bash
# Проверьте права доступа
ls -la testdata/
# Создайте папку заново
mkdir -p testdata
```
### Ошибки кэша
```bash
# Проверьте размер кэша в коде
# Убедитесь, что TTL установлен корректно
```
## 📊 Мониторинг производительности
### Проверка кэша
```go
// В коде добавьте:
fmt.Printf("Cache size: %d\n", db.GetActualCacheSize())
fmt.Printf("Cache limit: %d\n", db.GetLimitCacheSize())
```
### Проверка памяти
```bash
# Запустите с профилированием
go run -memprofile=mem.prof debug_app.go
go tool pprof mem.prof
```
## 🔍 Полезные команды
### Makefile
```bash
make help # Показать все команды
make clean # Очистить данные
make build # Собрать проект
make test # Запустить тесты
make lint # Проверить код
make fmt # Форматировать код
```
### Скрипт отладки
```bash
./debug.sh # Показать справку
./debug.sh simple # Отладка основного приложения
./debug.sh main # Отладка основного теста
./debug.sh tests # Отладка тестов
./debug.sh example # Отладка примера
```
## 📖 Дополнительная документация
- `DEBUG.md` - Полная документация по отладке
- `QUICK_DEBUG.md` - Краткая инструкция
- `OPTIMIZATION_SUMMARY.md` - Резюме оптимизаций
## 🚀 Советы по эффективной отладке
1. **Используйте VS Code** для удобной отладки с графическим интерфейсом
2. **Устанавливайте точки останова** в ключевых местах кода
3. **Изучите переменные** во время отладки для понимания состояния
4. **Используйте логи** для отслеживания выполнения
5. **Проверяйте кэш** при проблемах с производительностью
6. **Очищайте данные** между тестами с помощью `make clean`