Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
掘金者说
vscode
提交
00ead383
V
vscode
项目概览
掘金者说
/
vscode
与 Fork 源项目一致
从无法访问的项目Fork
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
V
vscode
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
00ead383
编写于
3月 07, 2019
作者:
A
Andre Weinand
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
use async version of fs.exists; fixes #69860
上级
68842a0c
变更
1
显示空白变更内容
内联
并排
Showing
1 changed file
with
35 addition
and
31 deletion
+35
-31
src/vs/workbench/contrib/debug/node/debugAdapter.ts
src/vs/workbench/contrib/debug/node/debugAdapter.ts
+35
-31
未找到文件。
src/vs/workbench/contrib/debug/node/debugAdapter.ts
浏览文件 @
00ead383
...
...
@@ -310,65 +310,67 @@ export class ExecutableDebugAdapter extends StreamDebugAdapter {
super
();
}
startSession
():
Promise
<
void
>
{
async
startSession
():
Promise
<
void
>
{
return
new
Promise
<
void
>
((
resolve
,
reject
)
=>
{
const
command
=
this
.
adapterExecutable
.
command
;
const
args
=
this
.
adapterExecutable
.
args
;
const
options
=
this
.
adapterExecutable
.
options
||
{};
// verify executables
if
(
this
.
adapterExecutable
.
command
)
{
if
(
path
.
isAbsolute
(
this
.
adapterExecutable
.
command
))
{
if
(
!
fs
.
existsSync
(
this
.
adapterExecutable
.
command
))
{
reject
(
new
Error
(
nls
.
localize
(
'
debugAdapterBinNotFound
'
,
"
Debug adapter executable '{0}' does not exist.
"
,
this
.
adapterExecutable
.
command
)));
try
{
// verify executables asynchronously
if
(
command
)
{
if
(
path
.
isAbsolute
(
command
))
{
const
ok
=
await
new
Promise
<
boolean
>
(
resolve
=>
fs
.
exists
(
command
,
resolve
));
if
(
!
ok
)
{
throw
new
Error
(
nls
.
localize
(
'
debugAdapterBinNotFound
'
,
"
Debug adapter executable '{0}' does not exist.
"
,
command
));
}
}
else
{
// relative path
if
(
this
.
adapterExecutable
.
command
.
indexOf
(
'
/
'
)
<
0
&&
this
.
adapterExecutable
.
command
.
indexOf
(
'
\\
'
)
<
0
)
{
if
(
command
.
indexOf
(
'
/
'
)
<
0
&&
command
.
indexOf
(
'
\\
'
)
<
0
)
{
// no separators: command looks like a runtime name like 'node' or 'mono'
// TODO: check that the runtime is available on PATH
}
}
}
else
{
reject
(
new
Error
(
nls
.
localize
({
key
:
'
debugAdapterCannotDetermineExecutable
'
,
comment
:
[
'
Adapter executable file not found
'
]
},
"
Cannot determine executable for debug adapter '{0}'.
"
,
this
.
debugType
))
)
;
throw
new
Error
(
nls
.
localize
({
key
:
'
debugAdapterCannotDetermineExecutable
'
,
comment
:
[
'
Adapter executable file not found
'
]
},
"
Cannot determine executable for debug adapter '{0}'.
"
,
this
.
debugType
));
}
let
env
=
objects
.
mixin
({},
process
.
env
);
if
(
this
.
adapterExecutable
.
options
&&
this
.
adapterExecutable
.
options
.
env
)
{
env
=
objects
.
mixin
(
env
,
this
.
adapterExecutable
.
options
.
env
);
if
(
options
.
env
)
{
env
=
objects
.
mixin
(
env
,
options
.
env
);
}
delete
env
.
VSCODE_PREVENT_FOREIGN_INSPECT
;
if
(
this
.
adapterExecutable
.
command
===
'
node
'
)
{
if
(
Array
.
isArray
(
this
.
adapterExecutable
.
args
)
&&
this
.
adapterExecutable
.
args
.
length
>
0
)
{
if
(
command
===
'
node
'
)
{
if
(
Array
.
isArray
(
args
)
&&
args
.
length
>
0
)
{
const
isElectron
=
!!
process
.
env
[
'
ELECTRON_RUN_AS_NODE
'
]
||
!!
process
.
versions
[
'
electron
'
];
const
o
ptions
:
cp
.
ForkOptions
=
{
const
forkO
ptions
:
cp
.
ForkOptions
=
{
env
:
env
,
execArgv
:
isElectron
?
[
'
-e
'
,
'
delete process.env.ELECTRON_RUN_AS_NODE;require(process.argv[1])
'
]
:
[],
silent
:
true
};
if
(
this
.
adapterExecutable
.
options
&&
this
.
adapterExecutable
.
options
.
cwd
)
{
options
.
cwd
=
this
.
adapterExecutable
.
options
.
cwd
;
if
(
options
.
cwd
)
{
forkOptions
.
cwd
=
options
.
cwd
;
}
const
child
=
cp
.
fork
(
this
.
adapterExecutable
.
args
[
0
],
this
.
adapterExecutable
.
args
.
slice
(
1
),
o
ptions
);
const
child
=
cp
.
fork
(
args
[
0
],
args
.
slice
(
1
),
forkO
ptions
);
if
(
!
child
.
pid
)
{
reject
(
new
Error
(
nls
.
localize
(
'
unableToLaunchDebugAdapter
'
,
"
Unable to launch debug adapter from '{0}'.
"
,
this
.
adapterExecutable
.
args
[
0
])
));
throw
new
Error
(
nls
.
localize
(
'
unableToLaunchDebugAdapter
'
,
"
Unable to launch debug adapter from '{0}'.
"
,
args
[
0
]
));
}
this
.
serverProcess
=
child
;
resolve
();
}
else
{
reject
(
new
Error
(
nls
.
localize
(
'
unableToLaunchDebugAdapterNoArgs
'
,
"
Unable to launch debug adapter.
"
)
));
throw
new
Error
(
nls
.
localize
(
'
unableToLaunchDebugAdapterNoArgs
'
,
"
Unable to launch debug adapter.
"
));
}
}
else
{
const
o
ptions
:
cp
.
SpawnOptions
=
{
const
spawnO
ptions
:
cp
.
SpawnOptions
=
{
env
:
env
};
if
(
this
.
adapterExecutable
.
options
&&
this
.
adapterExecutable
.
options
.
cwd
)
{
options
.
cwd
=
this
.
adapterExecutable
.
options
.
cwd
;
if
(
options
.
cwd
)
{
spawnOptions
.
cwd
=
options
.
cwd
;
}
this
.
serverProcess
=
cp
.
spawn
(
this
.
adapterExecutable
.
command
,
this
.
adapterExecutable
.
args
,
options
);
resolve
();
this
.
serverProcess
=
cp
.
spawn
(
command
,
args
,
spawnOptions
);
}
}).
then
(
_
=>
{
this
.
serverProcess
.
on
(
'
error
'
,
err
=>
{
this
.
_onError
.
fire
(
err
);
});
...
...
@@ -401,10 +403,12 @@ export class ExecutableDebugAdapter extends StreamDebugAdapter {
});
}
// finally connect to the DA
this
.
connect
(
this
.
serverProcess
.
stdout
,
this
.
serverProcess
.
stdin
);
},
(
err
:
Error
)
=>
{
}
catch
(
err
)
{
this
.
_onError
.
fire
(
err
);
}
);
}
}
stopSession
():
Promise
<
void
>
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录