Skip to content

Latest commit

 

History

History
 
 

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

README.md

Сервер отладки 1Script

Данное расширение предоставляет возможность отладки приложений 1Script. На данный момент находится в статусе ознакомительной версии.

Запуск отладки

  • Откройте папку с проектом oscript
  • Нажмите F5
  • Будет создан файл launch.json с параметрами отладки.

В файле launch.json можно задать несколько так называемых "профилей" отладки - наборов комбинаций параметров, под которым будет запускаться отлаживаемое приложение.

Каждый профиль отладки представляет собой настройку запуска отлаживаемого приложения, его аргументы командной строки и версию интерпретатора 1script, которая будет выполнять приложение.

Подробное описание каждого параметра выводится при наведении мышки на опцию в файле launch.json.

При возникновении вопросов напишите обращение на https://github.com/EvilBeaver/OneScript/issues. Мы обязательно вам поможем.

Маппинг путей для удаленной отладки

При отладке приложений 1Script, работающих в Docker-контейнерах, WSL или на удаленных машинах, возникает проблема несовпадения путей к исходным файлам. Локальная IDE устанавливает точки останова (breakpoints) по локальным путям (например, D:\projects\myapp\main.os), но удаленный runtime видит другие пути (например, /app/main.os в контейнере). Без маппинга точки останова не будут срабатывать.

Для решения этой проблемы используется параметр pathsMapping, который автоматически преобразует пути между локальной и удаленной файловой системой:

  • При отправке точек останова в отладчик локальные пути преобразуются в удаленные
  • При получении информации о стеке вызовов удаленные пути преобразуются обратно в локальные

Параметр pathsMapping доступен только в режиме "attach" и содержит два обязательных поля:

  • localPath - путь к каталогу проекта на локальной машине
  • remotePath - путь к каталогу проекта на удаленной машине (или в контейнере)

Примеры конфигураций запуска

Запуск 1Script, файл my-program.os с передачей аргументов командной строки и установкой переменных окружения

{
    "name": "Отладка 1Script",
    "type": "oscript",
    "request": "launch",
    "cwd": "${workspaceRoot}/src",
    "program": "my-program.os",
    "args": ["arg1", "arg2"],
    "env": {
        "OSCRIPT_CONFIG": "lib.system=D:/myOsLibraries",
        "JAVA_HOME": "D:/MyJava/JDK_29_Full"
    },
    "debugPort": 5051
}

Запуск сервера 1Script.Web, установленного по пути e:/osweb на порту 5051

{
    "name": "Отладка 1Script.Web",
    "type": "oscript.web",
    "request": "launch",
    "appDir": "${workspaceRoot}/src",
    "runtimeExecutable": "e:/osweb/OneScript.WebHost.exe",
    "debugPort": 5051
}

Подключение к работающему процессу 1Script.Web на порту 5051

{
    "name": "Отладка 1Script.Web (attach)",
    "type": "oscript.web",
    "request": "attach",
    "debugPort": 5051
}

Подключение к процессу 1Script в Docker-контейнере с маппингом путей

При отладке приложения, запущенного в Docker-контейнере, необходимо сопоставить локальные пути с путями внутри контейнера. Например, если локальный проект находится в D:\myproject, а внутри контейнера примонтирован в /app:

{
    "name": "Attach к Docker-контейнеру",
    "type": "oscript",
    "request": "attach",
    "debugPort": 2801,
    "pathsMapping": {
        "localPath": "D:/myproject",
        "remotePath": "/app"
    }
}

Примечание: В localPath используйте прямые слэши (/) даже в Windows для корректной работы маппинга.

Удаленная отладка с маппингом путей (Linux/WSL)

Для отладки приложения на удаленной Linux-машине или в WSL:

{
    "name": "Удаленная отладка на Linux",
    "type": "oscript",
    "request": "attach",
    "debugPort": 2801,
    "pathsMapping": {
        "localPath": "C:/Users/developer/projects/myapp",
        "remotePath": "/home/developer/myapp"
    }
}

Отладчик автоматически преобразует пути при установке точек останова и отображении стека вызовов, что позволяет корректно работать с исходным кодом независимо от различий в файловых системах.