// ĠCopyright Ġ 2 0 1 9 ĠAmazon . com , ĠInc . Ġor Ġits Ġaffiliates . ĠAll ĠRights ĠReserved . Ċ // ĠSPDX - License - Identifier : ĠApache - 2 . 0 Ċ Ċ package Ġsoftware . aws . tool k its . jetbrains . services . lambda . dotnet Ċ Ċ import Ġcom . intellij . execution . runners . Execution Environment Ċ import Ġcom . intellij . x debugger . X Debug Process Starter Ċ import Ġorg . jetbrains . concurrency . Promise Ċ import Ġsoftware . aws . tool k its . jetbrains . services . lambda . dotnet . Dot net Debug Utils . NUMBER _ OF _ DEBUG _ PORTS Ċ import Ġsoftware . aws . tool k its . jetbrains . services . lambda . execution . sam . Runtime Debug Support Ċ import Ġsoftware . aws . tool k its . jetbrains . services . lambda . execution . sam . Sam Running State Ċ import Ġsoftware . aws . tool k its . jetbrains . utils . DotNet Debugger Utils Ċ Ċ /** Ċ Ġ* ĠR ider Ġuses Ġit 's Ġown ĠDebugger Worker Ġprocess Ġthat Ġrun Ġunder Ġ. NET Ġwith Ġextra Ġparameters Ġto Ġconfigure : Ċ Ġ* ĠĠĠ Ġ- Ġdebugger Ġmode Ġ( client / server ) Ċ Ġ* ĠĠĠ Ġ- Ġfrontend Ġport Ċ Ġ* ĠĠĠ Ġ- Ġbackend Ġport Ċ Ġ* Ċ Ġ* ĠWorkflow : Ċ Ġ* Ġ 1 . ĠFind Ġthe Ġcorrect Ġcontainer Ġby Ġfiltering Ġ` docker Ġps ` Ġfor Ġone Ġof Ġthe Ġpublished Ġport Ġof Ġthe Ġdebugger Ċ Ġ* Ġ 2 . ĠUse Ġ` docker Ġexec ` Ġand Ġa Ġshell Ġscript Ġto Ġlocate Ġthe Ġdotnet ĠPID Ġof Ġthe Ġruntime . Ċ Ġ* Ġ 3 . ĠLaunch Ġthe ĠDebugger Ġworker Ġin Ġserver Ġmode Ġusing Ġ` docker Ġexec ` Ċ Ġ* Ġ 4 . ĠSend Ġthe Ġcommand Ġto Ġthe Ġworker Ġto Ġattach Ġto Ġthe Ġcorrect ĠPID . Ċ Ġ*/ Ċ class ĠDot Net Runtime Debug Support Ġ: ĠRuntime Debug Support Ġ{ ĊĠĠĠ Ġoverride Ġfun ĠnumberOf Debug Ports (): ĠInt Ġ= ĠNUMBER _ OF _ DEBUG _ PORTS ĊĊĠĠĠ Ġoverride Ġfun Ġsam Arguments ( debug Ports : ĠList < Int >): ĠList < String > Ġ= ĠlistOf ("-- debugger - path ", ĠDot Net Debugger Utils . debugger Bin Dir . path ) ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġcreate Debug Process ( ĊĠĠĠĠĠĠĠ Ġenvironment : ĠExecution Environment , ĊĠĠĠĠĠĠĠ Ġstate : ĠSam Running State , ĊĠĠĠĠĠĠĠ Ġdebug Host : ĠString , ĊĠĠĠĠĠĠĠ Ġdebug Ports : ĠList < Int > ĊĠĠĠ Ġ): ĠX Debug Process Starter ? Ġ{ ĊĠĠĠĠĠĠĠ Ġthrow ĠUnsupportedOperationException (" Use Ġ' create Debug Process Async ' Ġinstead ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġcreate Debug Process Async ( ĊĠĠĠĠĠĠĠ Ġenvironment : ĠExecution Environment , ĊĠĠĠĠĠĠĠ Ġstate : ĠSam Running State , ĊĠĠĠĠĠĠĠ Ġdebug Host : ĠString , ĊĠĠĠĠĠĠĠ Ġdebug Ports : ĠList < Int > ĊĠĠĠ Ġ): ĠPromise < X Debug Process Starter ?> Ġ= ĠDot net Debug Utils . create Debug Process Async ( environment , Ġstate , Ġdebug Host , Ġdebug Ports ) Ċ } Ċ