Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
掘金者说
vscode
提交
70a533c0
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,发现更多精彩内容 >>
提交
70a533c0
编写于
3月 24, 2016
作者:
I
isidor
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
debug: cancel all sent promises on disconnect
fixes #3666
上级
f6434628
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
26 addition
and
16 deletion
+26
-16
src/vs/workbench/parts/debug/node/rawDebugSession.ts
src/vs/workbench/parts/debug/node/rawDebugSession.ts
+26
-16
未找到文件。
src/vs/workbench/parts/debug/node/rawDebugSession.ts
浏览文件 @
70a533c0
...
...
@@ -27,6 +27,7 @@ export class RawDebugSession extends v8.V8Protocol implements debug.IRawDebugSes
private
cachedInitServer
:
TPromise
<
void
>
;
private
startTime
:
number
;
private
stopServerPending
:
boolean
;
private
sentPromises
:
TPromise
<
DebugProtocol
.
Response
>
[];
public
isAttach
:
boolean
;
public
restarted
:
boolean
;
public
capabilities
:
DebugProtocol
.
Capabilites
;
...
...
@@ -40,6 +41,7 @@ export class RawDebugSession extends v8.V8Protocol implements debug.IRawDebugSes
)
{
super
();
this
.
capabilities
=
{};
this
.
sentPromises
=
[];
}
private
initServer
():
TPromise
<
void
>
{
...
...
@@ -60,24 +62,29 @@ export class RawDebugSession extends v8.V8Protocol implements debug.IRawDebugSes
}
protected
send
(
command
:
string
,
args
:
any
):
TPromise
<
DebugProtocol
.
Response
>
{
return
this
.
initServer
().
then
(()
=>
super
.
send
(
command
,
args
).
then
(
response
=>
response
,
(
errorResponse
:
DebugProtocol
.
ErrorResponse
)
=>
{
const
error
=
errorResponse
.
body
?
errorResponse
.
body
.
error
:
null
;
const
message
=
error
?
debug
.
formatPII
(
error
.
format
,
false
,
error
.
variables
)
:
errorResponse
.
message
;
if
(
error
&&
error
.
sendTelemetry
)
{
this
.
telemetryService
.
publicLog
(
'
debugProtocolErrorResponse
'
,
{
error
:
message
});
this
.
telemtryAdapter
.
log
(
'
debugProtocolErrorResponse
'
,
{
error
:
message
});
}
return
this
.
initServer
().
then
(()
=>
{
const
promise
=
super
.
send
(
command
,
args
).
then
(
response
=>
response
,
(
errorResponse
:
DebugProtocol
.
ErrorResponse
)
=>
{
const
error
=
errorResponse
.
body
?
errorResponse
.
body
.
error
:
null
;
const
message
=
error
?
debug
.
formatPII
(
error
.
format
,
false
,
error
.
variables
)
:
errorResponse
.
message
;
if
(
error
&&
error
.
sendTelemetry
)
{
this
.
telemetryService
.
publicLog
(
'
debugProtocolErrorResponse
'
,
{
error
:
message
});
this
.
telemtryAdapter
.
log
(
'
debugProtocolErrorResponse
'
,
{
error
:
message
});
}
if
(
error
&&
error
.
url
)
{
const
label
=
error
.
urlLabel
?
error
.
urlLabel
:
nls
.
localize
(
'
moreInfo
'
,
"
More Info
"
);
return
TPromise
.
wrapError
(
errors
.
create
(
message
,
{
actions
:
[
CloseAction
,
new
Action
(
'
debug.moreInfo
'
,
label
,
null
,
true
,
()
=>
{
shell
.
openExternal
(
error
.
url
);
return
TPromise
.
as
(
null
);
})]}));
}
if
(
error
&&
error
.
url
)
{
const
label
=
error
.
urlLabel
?
error
.
urlLabel
:
nls
.
localize
(
'
moreInfo
'
,
"
More Info
"
);
return
TPromise
.
wrapError
(
errors
.
create
(
message
,
{
actions
:
[
CloseAction
,
new
Action
(
'
debug.moreInfo
'
,
label
,
null
,
true
,
()
=>
{
shell
.
openExternal
(
error
.
url
);
return
TPromise
.
as
(
null
);
})]}));
}
return
TPromise
.
wrapError
(
new
Error
(
message
));
}));
return
TPromise
.
wrapError
(
new
Error
(
message
));
});
this
.
sentPromises
.
push
(
promise
);
return
promise
;
});
}
public
initialize
(
args
:
DebugProtocol
.
InitializeRequestArguments
):
TPromise
<
DebugProtocol
.
InitializeResponse
>
{
...
...
@@ -137,6 +144,9 @@ export class RawDebugSession extends v8.V8Protocol implements debug.IRawDebugSes
if
(
this
.
stopServerPending
&&
force
)
{
return
this
.
stopServer
();
}
// Cancel all sent promises on disconnect so debug trees are not left in a broken state #3666.
this
.
sentPromises
.
forEach
(
p
=>
p
.
cancel
());
this
.
sentPromises
=
[];
if
((
this
.
serverProcess
||
this
.
socket
)
&&
!
this
.
stopServerPending
)
{
// point of no return: from now on don't report any errors
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录