Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
xxadev
vscode
提交
858cc101
V
vscode
项目概览
xxadev
/
vscode
与 Fork 源项目一致
从无法访问的项目Fork
通知
2
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
V
vscode
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
858cc101
编写于
3月 16, 2016
作者:
I
isidor
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
debug: better handling of session listeners
#4192
上级
4430f4b7
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
14 addition
and
8 deletion
+14
-8
src/vs/workbench/parts/debug/electron-browser/debugService.ts
...vs/workbench/parts/debug/electron-browser/debugService.ts
+14
-8
未找到文件。
src/vs/workbench/parts/debug/electron-browser/debugService.ts
浏览文件 @
858cc101
...
...
@@ -71,6 +71,7 @@ export class DebugService extends ee.EventEmitter implements debug.IDebugService
private
telemetryAdapter
:
AIAdapter
;
private
lastTaskEvent
:
TaskEvent
;
private
toDispose
:
lifecycle
.
IDisposable
[];
private
toDisposeOnSessionEnd
:
lifecycle
.
IDisposable
[];
private
inDebugMode
:
IKeybindingContextKey
<
boolean
>
;
constructor
(
...
...
@@ -95,6 +96,7 @@ export class DebugService extends ee.EventEmitter implements debug.IDebugService
super
();
this
.
toDispose
=
[];
this
.
toDisposeOnSessionEnd
=
[];
this
.
debugStringEditorInputs
=
[];
this
.
session
=
null
;
this
.
state
=
debug
.
State
.
Inactive
;
...
...
@@ -225,7 +227,7 @@ export class DebugService extends ee.EventEmitter implements debug.IDebugService
}
private
registerSessionListeners
():
void
{
this
.
toDispose
.
push
(
this
.
session
.
addListener2
(
debug
.
SessionEvents
.
INITIALIZED
,
(
event
:
DebugProtocol
.
InitializedEvent
)
=>
{
this
.
toDispose
OnSessionEnd
.
push
(
this
.
session
.
addListener2
(
debug
.
SessionEvents
.
INITIALIZED
,
(
event
:
DebugProtocol
.
InitializedEvent
)
=>
{
aria
.
status
(
nls
.
localize
(
'
debuggingStarted
'
,
"
Debugging started.
"
));
this
.
sendAllBreakpoints
().
then
(()
=>
{
if
(
this
.
session
.
capabilities
.
supportsConfigurationDoneRequest
)
{
...
...
@@ -234,7 +236,7 @@ export class DebugService extends ee.EventEmitter implements debug.IDebugService
});
}));
this
.
toDispose
.
push
(
this
.
session
.
addListener2
(
debug
.
SessionEvents
.
STOPPED
,
(
event
:
DebugProtocol
.
StoppedEvent
)
=>
{
this
.
toDispose
OnSessionEnd
.
push
(
this
.
session
.
addListener2
(
debug
.
SessionEvents
.
STOPPED
,
(
event
:
DebugProtocol
.
StoppedEvent
)
=>
{
this
.
setStateAndEmit
(
debug
.
State
.
Stopped
);
const
threadId
=
event
.
body
.
threadId
;
...
...
@@ -255,14 +257,14 @@ export class DebugService extends ee.EventEmitter implements debug.IDebugService
},
errors
.
onUnexpectedError
);
}));
this
.
toDispose
.
push
(
this
.
session
.
addListener2
(
debug
.
SessionEvents
.
CONTINUED
,
()
=>
{
this
.
toDispose
OnSessionEnd
.
push
(
this
.
session
.
addListener2
(
debug
.
SessionEvents
.
CONTINUED
,
()
=>
{
aria
.
status
(
nls
.
localize
(
'
debuggingContinued
'
,
"
Debugging continued.
"
));
this
.
model
.
clearThreads
(
false
);
this
.
setFocusedStackFrameAndEvaluate
(
null
);
this
.
setStateAndEmit
(
this
.
configurationManager
.
getConfiguration
().
noDebug
?
debug
.
State
.
RunningNoDebug
:
debug
.
State
.
Running
);
}));
this
.
toDispose
.
push
(
this
.
session
.
addListener2
(
debug
.
SessionEvents
.
THREAD
,
(
event
:
DebugProtocol
.
ThreadEvent
)
=>
{
this
.
toDispose
OnSessionEnd
.
push
(
this
.
session
.
addListener2
(
debug
.
SessionEvents
.
THREAD
,
(
event
:
DebugProtocol
.
ThreadEvent
)
=>
{
if
(
event
.
body
.
reason
===
'
started
'
)
{
this
.
session
.
threads
().
done
((
result
)
=>
{
const
thread
=
result
.
body
.
threads
.
filter
(
thread
=>
thread
.
id
===
event
.
body
.
threadId
).
pop
();
...
...
@@ -278,7 +280,7 @@ export class DebugService extends ee.EventEmitter implements debug.IDebugService
}
}));
this
.
toDispose
.
push
(
this
.
session
.
addListener2
(
debug
.
SessionEvents
.
DEBUGEE_TERMINATED
,
(
event
:
DebugProtocol
.
TerminatedEvent
)
=>
{
this
.
toDispose
OnSessionEnd
.
push
(
this
.
session
.
addListener2
(
debug
.
SessionEvents
.
DEBUGEE_TERMINATED
,
(
event
:
DebugProtocol
.
TerminatedEvent
)
=>
{
aria
.
status
(
nls
.
localize
(
'
debuggingStopped
'
,
"
Debugging stopped.
"
));
if
(
this
.
session
&&
this
.
session
.
getId
()
===
(
<
any
>
event
).
sessionId
)
{
if
(
event
.
body
&&
typeof
event
.
body
.
restart
===
'
boolean
'
&&
event
.
body
.
restart
)
{
...
...
@@ -289,7 +291,7 @@ export class DebugService extends ee.EventEmitter implements debug.IDebugService
}
}));
this
.
toDispose
.
push
(
this
.
session
.
addListener2
(
debug
.
SessionEvents
.
OUTPUT
,
(
event
:
DebugProtocol
.
OutputEvent
)
=>
{
this
.
toDispose
OnSessionEnd
.
push
(
this
.
session
.
addListener2
(
debug
.
SessionEvents
.
OUTPUT
,
(
event
:
DebugProtocol
.
OutputEvent
)
=>
{
if
(
event
.
body
&&
event
.
body
.
category
===
'
telemetry
'
)
{
// only log telemetry events from debug adapter if the adapter provided the telemetry key
if
(
this
.
telemetryAdapter
)
{
...
...
@@ -300,7 +302,7 @@ export class DebugService extends ee.EventEmitter implements debug.IDebugService
}
}));
this
.
toDispose
.
push
(
this
.
session
.
addListener2
(
debug
.
SessionEvents
.
BREAKPOINT
,
(
event
:
DebugProtocol
.
BreakpointEvent
)
=>
{
this
.
toDispose
OnSessionEnd
.
push
(
this
.
session
.
addListener2
(
debug
.
SessionEvents
.
BREAKPOINT
,
(
event
:
DebugProtocol
.
BreakpointEvent
)
=>
{
const
id
=
event
.
body
&&
event
.
body
.
breakpoint
?
event
.
body
.
breakpoint
.
id
:
undefined
;
const
breakpoint
=
this
.
model
.
getBreakpoints
().
filter
(
bp
=>
bp
.
idFromAdapter
===
id
).
pop
();
if
(
breakpoint
)
{
...
...
@@ -313,7 +315,7 @@ export class DebugService extends ee.EventEmitter implements debug.IDebugService
}
}));
this
.
toDispose
.
push
(
this
.
session
.
addListener2
(
debug
.
SessionEvents
.
SERVER_EXIT
,
event
=>
{
this
.
toDispose
OnSessionEnd
.
push
(
this
.
session
.
addListener2
(
debug
.
SessionEvents
.
SERVER_EXIT
,
event
=>
{
// 'Run without debugging' mode VSCode must terminate the extension host. More details: #3905
if
(
this
.
session
.
getType
()
===
'
extensionHost
'
&&
this
.
state
===
debug
.
State
.
RunningNoDebug
)
{
ipc
.
send
(
'
vscode:closeExtensionHostWindow
'
,
this
.
contextService
.
getWorkspace
().
resource
.
fsPath
);
...
...
@@ -699,6 +701,7 @@ export class DebugService extends ee.EventEmitter implements debug.IDebugService
if
(
this
.
session
)
{
const
bpsExist
=
this
.
model
.
getBreakpoints
().
length
>
0
;
this
.
session
.
dispose
();
this
.
telemetryService
.
publicLog
(
'
debugSessionStop
'
,
{
type
:
this
.
session
.
getType
(),
success
:
this
.
session
.
emittedStopped
||
!
bpsExist
,
...
...
@@ -707,7 +710,9 @@ export class DebugService extends ee.EventEmitter implements debug.IDebugService
watchExpressionsCount
:
this
.
model
.
getWatchExpressions
().
length
});
}
this
.
session
=
null
;
this
.
toDisposeOnSessionEnd
=
lifecycle
.
disposeAll
(
this
.
toDisposeOnSessionEnd
);
this
.
partService
.
removeClass
(
'
debugging
'
);
this
.
editorService
.
focusEditor
();
...
...
@@ -917,5 +922,6 @@ export class DebugService extends ee.EventEmitter implements debug.IDebugService
}
this
.
model
.
dispose
();
this
.
toDispose
=
lifecycle
.
disposeAll
(
this
.
toDispose
);
this
.
toDisposeOnSessionEnd
=
lifecycle
.
disposeAll
(
this
.
toDisposeOnSessionEnd
);
}
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录