Skip to content

Commit 4afd406

Browse files
committed
Add sequence diagrams for debug API
1 parent 0b3faeb commit 4afd406

File tree

6 files changed

+296
-0
lines changed

6 files changed

+296
-0
lines changed

plantuml/debug_api/_base.puml

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
skinparam style strictuml
2+
skinparam stereotypePosition bottom
3+
skinparam actorStyle awesome
4+
5+
actor User
6+
7+
!if $debuggee != %false()
8+
participant Debuggee [
9+
Debuggee
10+
//(eg. spell circle)//
11+
]
12+
!endif
13+
14+
participant DebugEnv << DebugEnvironment >> [
15+
""debugEnv""
16+
]
17+
18+
participant API [
19+
""HexDebugCoreAPI""
20+
]
21+
22+
participant Adapter [
23+
Debug Adapter
24+
]
25+
26+
participant Debugger [
27+
Debugger
28+
//("debug thread")//
29+
]
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
@startuml
2+
3+
!include ./_base.puml
4+
5+
title Initialization
6+
7+
User ->> Debuggee **: start debugging
8+
activate Debuggee
9+
Debuggee -> DebugEnv **: create
10+
activate DebugEnv
11+
return
12+
13+
Debuggee -> API ++: ""createDebugThread(debugEnv, threadId)""
14+
API -> Adapter ++: create thread
15+
Adapter -> Debugger **: create
16+
activate Debugger
17+
return
18+
19+
Adapter ->> User: event: thread started
20+
return
21+
return
22+
23+
Debuggee ->> Debuggee: start
24+
25+
...
26+
27+
Debuggee -> Debuggee: pause
28+
29+
Debuggee -> API ++: ""startDebuggingIotas(debugEnv, ...)""
30+
note left
31+
this can happen immediately,
32+
or after a delay; eg. a circle
33+
would create the thread when
34+
the impetus is activated, but
35+
wait to call this method until
36+
a slate is reached
37+
end note
38+
API -> Adapter ++: start executing
39+
Adapter -> Debugger ++: start executing
40+
return stopped on entry
41+
42+
Adapter ->> User: event: stopped on entry
43+
return
44+
return
45+
deactivate Debuggee
46+
47+
@enduml

plantuml/debug_api/nested.puml

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
@startuml
2+
3+
!$debuggee = %false()
4+
!include ./_base.puml
5+
6+
title Nested Debugging
7+
8+
participant Debuggee2 [
9+
Debuggee #2
10+
//(eg. cassette)//
11+
]
12+
13+
participant Debugger2 [
14+
Debugger #2
15+
]
16+
17+
User ->> Adapter ++: request: step
18+
Adapter -> DebugEnv ++: ""isCasterInRange()""
19+
return true
20+
21+
Adapter -> Debugger ++: step
22+
Debugger -> Debugger ++: execute next iota
23+
Debugger -> Debuggee2 **: create
24+
activate Debuggee2
25+
Debuggee2 -> API ++: ""createDebugThread(debugEnv, threadId)""
26+
API -> Adapter ++: create thread
27+
Adapter -> Debugger2 **: create
28+
activate Debugger2
29+
return
30+
31+
Adapter ->> User: event: thread started
32+
return
33+
return
34+
35+
Debuggee2 ->> Debuggee2: start
36+
return
37+
return
38+
return stopped on step
39+
40+
Adapter ->> User: event: stopped on step
41+
deactivate Adapter
42+
43+
...
44+
45+
Debuggee2 -> Debuggee2 ++: pause
46+
Debuggee2 -> API ++: ""startDebuggingIotas(debugEnv, ...)""
47+
API -> Adapter ++: start executing
48+
Adapter -> Debugger2 ++: start executing
49+
return stopped on entry
50+
51+
Adapter ->> User: event: stopped on entry
52+
return
53+
return
54+
deactivate Debuggee2
55+
56+
@enduml

plantuml/debug_api/stepping.puml

Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
@startuml
2+
3+
!include ./_base.puml
4+
5+
title Stepping
6+
7+
==Step within current iota list==
8+
9+
User ->> Adapter ++: request: step forward
10+
Adapter -> DebugEnv ++: ""isCasterInRange()""
11+
return whether the caster is close\nenough to the debuggee
12+
13+
alt caster in range
14+
Adapter -> Debugger ++: step
15+
Debugger -> Debugger ++: execute next iota
16+
opt pattern prints a message
17+
Debugger -> DebugEnv ++: ""printDebugMessage(...)""
18+
DebugEnv -> API ++: ""printDebugMessage(...)""
19+
API ->> User: event: print to output
20+
return
21+
return
22+
end
23+
return
24+
return stopped on step
25+
Adapter ->> User: event: stopped on step
26+
else caster out of range
27+
Adapter ->> User: error: out of range
28+
end
29+
deactivate Adapter
30+
31+
==Step out of current iota list==
32+
33+
User ->> Adapter ++: request: step over final iota
34+
Adapter -> DebugEnv ++: ""isCasterInRange()""
35+
return ""true""
36+
37+
Adapter -> Debugger ++: step
38+
Debugger -> Debugger: execute next (final) iota
39+
40+
Debugger -> DebugEnv ++: ""resume(env, image, resolutionType)""
41+
DebugEnv ->> Debuggee ++: unpause
42+
DebugEnv --> Debugger --: ""true""
43+
Debugger --> Adapter --: resumed
44+
45+
Adapter ->> User: event: continued
46+
deactivate Adapter
47+
48+
...
49+
50+
Debuggee -> Debuggee: pause
51+
52+
Debuggee -> API ++: ""startDebuggingIotas(...)""
53+
API -> Adapter ++: start executing
54+
Adapter -> Debugger ++: start executing
55+
return stopped on step
56+
57+
Adapter ->> User: event: stopped on step
58+
return
59+
return
60+
deactivate Debuggee
61+
62+
@enduml

plantuml/debug_api/stopping.puml

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
@startuml
2+
3+
!include ./_base.puml
4+
5+
title Stopping/Restarting
6+
7+
==Stopping==
8+
9+
User ->> Adapter ++: request: stop
10+
Adapter -> DebugEnv ++: ""isCasterInRange()""
11+
return true
12+
13+
Adapter ->> User: event: thread exited
14+
15+
Adapter -> Debugger !!: remove
16+
17+
Adapter -> DebugEnv ++: ""terminate()""
18+
DebugEnv ->> Debuggee !!: terminate
19+
return
20+
deactivate Adapter
21+
22+
==Restarting==
23+
24+
User ->> Adapter ++: request: restart
25+
Adapter -> DebugEnv ++: ""isCasterInRange()""
26+
return true
27+
28+
Adapter -> Debugger !!: remove
29+
30+
Adapter -> DebugEnv ++: ""restart(threadId)""
31+
DebugEnv ->> Debuggee: restart
32+
33+
DebugEnv -> API ++: ""createDebugThread(debugEnv, threadId)""
34+
API -> Adapter ++: create thread
35+
Adapter -> Debugger ++: create
36+
return
37+
38+
Adapter ->> User: event: thread started
39+
return
40+
return
41+
return
42+
deactivate Adapter
43+
44+
@enduml
Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
@startuml
2+
3+
!include ./_base.puml
4+
5+
title Terminating
6+
7+
==Terminating via ""resume()""==
8+
9+
User ->> Adapter ++: request: continue
10+
Adapter -> DebugEnv ++: ""isCasterInRange()""
11+
return true
12+
13+
Adapter -> Debugger ++: continue
14+
Debugger -> Debugger: execute all iotas
15+
16+
Debugger -> DebugEnv ++: ""resume(env, image, resolutionType)""
17+
return ""false""
18+
return unable to resume
19+
20+
Adapter ->> User: event: thread exited
21+
22+
Adapter -> Debugger !!: remove
23+
24+
Adapter -> DebugEnv ++: ""terminate()""
25+
DebugEnv ->> Debuggee !!: terminate
26+
return
27+
deactivate Adapter
28+
29+
==Terminating via API==
30+
31+
Debuggee -> API ++: ""terminateDebugThread(debugEnv)""
32+
activate Debuggee
33+
API -> Adapter ++: terminate thread
34+
Adapter ->> User: event: thread exited
35+
36+
Adapter -> Debugger !!: remove
37+
38+
Adapter -> DebugEnv ++: ""terminate()""
39+
DebugEnv ->> Debuggee !!: terminate
40+
return
41+
return
42+
return
43+
deactivate Debuggee
44+
45+
==Removing via API==
46+
47+
Debuggee -> API ++: ""removeDebugThread(debugEnv)""
48+
activate Debuggee
49+
API -> Adapter ++: terminate thread
50+
Adapter ->> User: event: thread exited
51+
52+
Adapter -> Debugger !!: remove
53+
return
54+
return
55+
56+
Debuggee -> Debuggee !!: terminate
57+
58+
@enduml

0 commit comments

Comments
 (0)