Информация об изменениях

Сообщение Re[2]: Как делается отладчик собственного скриптового редакт от 05.11.2023 22:04

Изменено 05.11.2023 22:38 bnk

Re[2]: Как делается отладчик собственного скриптового редакт
Здравствуйте, RushDevion, Вы писали:

RD>В .net есть debugging API.

RD>Но по msdn докам с ним тяжело разобраться.
RD>Вот посмотри серию статей: https://lowleveldesign.wordpress.com/2010/10/11/writing-a-net-debugger-part-1-starting-the-debugging-session

Интересно, но 2010 год, и какой-то жуткий COM Interop на винде
Подумал тут что в VS Code отладка под линуксом/маком работает, может быть что-то полезное.
https://github.com/dotnet/vscode-csharp

Поспрашивал чат гопоты он на удивление довольно много знает.
Говорит что vscode использует vsdbg, это такой специальный готовый отладчик
Оно взаимодействует с ним через протокол DAP https://microsoft.github.io/debug-adapter-protocol
Re[2]: Как делается отладчик собственного скриптового редакт
Здравствуйте, RushDevion, Вы писали:

RD>В .net есть debugging API.

RD>Но по msdn докам с ним тяжело разобраться.
RD>Вот посмотри серию статей: https://lowleveldesign.wordpress.com/2010/10/11/writing-a-net-debugger-part-1-starting-the-debugging-session

Интересно, но 2010 год, и какой-то жуткий COM Interop на винде
Подумал тут что в VS Code отладка под линуксом/маком работает, может быть что-то полезное.
https://github.com/dotnet/vscode-csharp

Поспрашивал чат гопоты он на удивление довольно много знает.
Говорит что vscode использует vsdbg, это такой специальный готовый отладчик
Оно взаимодействует с ним через протокол DAP https://microsoft.github.io/debug-adapter-protocol
Взаимодействие путем посылки и приема JSON через консольный пайп.

  Говорит вот так можно запустить и установить точку останова
// Initialize Debug Session
{
  "command": "initialize",
  "arguments": {
    "clientID": "your-editor",
    "clientName": "Your Editor",
    "adapterID": "coreclr",
    "pathFormat": "path",
    "linesStartAt1": true,
    "columnsStartAt1": true,
    "supportsVariableType": true,
    "supportsVariablePaging": false,
    "supportsRunInTerminalRequest": true,
    "locale": "en-us"
  },
  "type": "request",
  "seq": 1
}

// Attach or Launch the Script
{
  "command": "launch",
  "arguments": {
    "program": "path/to/script.dll",
    "stopAtEntry": false,
    "cwd": "path/to/script",
    "console": "internalConsole",
    // Other necessary arguments
  },
  "type": "request",
  "seq": 2
}

// Set Breakpoints
{
  "command": "setBreakpoints",
  "arguments": {
    "source": {
      "path": "path/to/script.cs"
    },
    "breakpoints": [
      {
        "line": 10
      }
      // More breakpoints
    ],
    "sourceModified": false
  },
  "type": "request",
  "seq": 3
}