From e9b672c2f0b67c6d8a89638a83d13c992d461377 Mon Sep 17 00:00:00 2001 From: adri09070 <97704417+adri09070@users.noreply.github.com> Date: Thu, 30 Mar 2023 15:12:51 +0200 Subject: [PATCH 1/7] splitting sources and doc - sources are now in `src` folder - doc is now in `doc` folder --- LowLevelAPI.md => doc/LowLevelAPI.md | 0 doc/README.md | 25 ++++++++++++++++++ .../SindarinInterpreterAPI.md | 0 src/.DS_Store | Bin 0 -> 8196 bytes .../BaselineOfSindarin.class.st | 0 .../BaselineOfSindarin}/package.st | 0 .../Sindarin-Demo}/SindarinDemo.class.st | 0 .../SindarinDemo_GoldDigger.class.st | 0 .../SindarinDemo_SkipNextException.class.st | 0 .../SindarinDemo_StepToNextIteration.class.st | 0 .../Sindarin-Demo}/package.st | 0 ...nAloneButFailsWhenRanFromTheClass.class.st | 0 .../ExampleExecutionStackTransform1.class.st | 0 .../ExampleExecutionStackTransform2.class.st | 0 ...nAGivenFieldIsAssignedAGivenValue.class.st | 0 ...lingAGivenMethoWithAGivenArgument.class.st | 0 .../Sindarin-Experiments}/package.st | 0 .../SindarinCommandBuilderTest.class.st | 0 .../SindarinScriptBuilderTest.class.st | 0 .../SindarinScriptTest.class.st | 0 .../SindarinTDebuggerTest.class.st | 0 .../SindarinTestDebugger.class.st | 0 .../SindarinTestDebuggerScript.class.st | 0 .../Sindarin-Scripts-Tests}/package.st | 0 .../SindarinPointcut.class.st | 0 .../SindarinPointcutException.class.st | 0 .../Sindarin-Scripts}/SindarinScript.class.st | 0 .../SindarinScriptBuilder.class.st | 0 .../SindarinScriptPointcutsExamples.class.st | 0 .../StepToNextDoIterationDbgScript.class.st | 0 ...ilAboutToSignalExceptionDbgScript.class.st | 0 .../TDebuggerScript.trait.st | 0 .../TSindarinScriptInterpreter.trait.st | 0 .../Sindarin-Scripts}/package.st | 0 .../SindarinDebugSessionMock.class.st | 0 .../SindarinDebugSessionTest.class.st | 0 .../SindarinDebuggerTest.class.st | 0 .../Sindarin-Tests}/package.st | 0 .../Sindarin}/Context.extension.st | 0 .../Sindarin}/ContextNotOnStack.class.st | 0 .../Sindarin}/DebugSession.extension.st | 0 .../DebuggedExecutionException.class.st | 0 .../DebuggedExecutionIsFinished.class.st | 0 .../Sindarin}/InstructionStream.extension.st | 0 .../Sindarin}/NodeNotInASTError.class.st | 0 .../Sindarin}/NotValidPcError.class.st | 0 .../OCBytecodeToASTCache.extension.st | 0 .../Sindarin}/Object.extension.st | 0 .../Sindarin}/Process.extension.st | 0 .../Sindarin}/RBAssignmentNode.extension.st | 0 ...RBBlockDefinitionSearchingVisitor.class.st | 0 .../Sindarin}/RBBlockNode.extension.st | 0 .../Sindarin}/RBMessageNode.extension.st | 0 .../Sindarin}/RBMethodNode.extension.st | 0 .../Sindarin}/RBProgramNode.extension.st | 0 .../Sindarin}/RBReturnNode.extension.st | 0 .../Sindarin}/SindarinDebugSession.class.st | 0 .../Sindarin}/SindarinDebugger.class.st | 0 .../SindarinSkippingReturnWarning.class.st | 0 .../Sindarin}/SindarinUILessDebugger.class.st | 0 .../SteppingATerminatingProcess.class.st | 0 ...tionSignalledByADebuggedExecution.class.st | 0 {Sindarin => src/Sindarin}/package.st | 0 63 files changed, 25 insertions(+) rename LowLevelAPI.md => doc/LowLevelAPI.md (100%) create mode 100644 doc/README.md rename SindarinInterpreterAPI.md => doc/SindarinInterpreterAPI.md (100%) create mode 100644 src/.DS_Store rename {BaselineOfSindarin => src/BaselineOfSindarin}/BaselineOfSindarin.class.st (100%) rename {BaselineOfSindarin => src/BaselineOfSindarin}/package.st (100%) rename {Sindarin-Demo => src/Sindarin-Demo}/SindarinDemo.class.st (100%) rename {Sindarin-Demo => src/Sindarin-Demo}/SindarinDemo_GoldDigger.class.st (100%) rename {Sindarin-Demo => src/Sindarin-Demo}/SindarinDemo_SkipNextException.class.st (100%) rename {Sindarin-Demo => src/Sindarin-Demo}/SindarinDemo_StepToNextIteration.class.st (100%) rename {Sindarin-Demo => src/Sindarin-Demo}/package.st (100%) rename {Sindarin-Experiments => src/Sindarin-Experiments}/Bug_TestPassesWhenRanAloneButFailsWhenRanFromTheClass.class.st (100%) rename {Sindarin-Experiments => src/Sindarin-Experiments}/ExampleExecutionStackTransform1.class.st (100%) rename {Sindarin-Experiments => src/Sindarin-Experiments}/ExampleExecutionStackTransform2.class.st (100%) rename {Sindarin-Experiments => src/Sindarin-Experiments}/Scenario1SetBreakpointWhenAGivenFieldIsAssignedAGivenValue.class.st (100%) rename {Sindarin-Experiments => src/Sindarin-Experiments}/Scenario2SetBreakpointsOnMethodsCallingAGivenMethoWithAGivenArgument.class.st (100%) rename {Sindarin-Experiments => src/Sindarin-Experiments}/package.st (100%) rename {Sindarin-Scripts-Tests => src/Sindarin-Scripts-Tests}/SindarinCommandBuilderTest.class.st (100%) rename {Sindarin-Scripts-Tests => src/Sindarin-Scripts-Tests}/SindarinScriptBuilderTest.class.st (100%) rename {Sindarin-Scripts-Tests => src/Sindarin-Scripts-Tests}/SindarinScriptTest.class.st (100%) rename {Sindarin-Scripts-Tests => src/Sindarin-Scripts-Tests}/SindarinTDebuggerTest.class.st (100%) rename {Sindarin-Scripts-Tests => src/Sindarin-Scripts-Tests}/SindarinTestDebugger.class.st (100%) rename {Sindarin-Scripts-Tests => src/Sindarin-Scripts-Tests}/SindarinTestDebuggerScript.class.st (100%) rename {Sindarin-Scripts-Tests => src/Sindarin-Scripts-Tests}/package.st (100%) rename {Sindarin-Scripts => src/Sindarin-Scripts}/SindarinPointcut.class.st (100%) rename {Sindarin-Scripts => src/Sindarin-Scripts}/SindarinPointcutException.class.st (100%) rename {Sindarin-Scripts => src/Sindarin-Scripts}/SindarinScript.class.st (100%) rename {Sindarin-Scripts => src/Sindarin-Scripts}/SindarinScriptBuilder.class.st (100%) rename {Sindarin-Scripts => src/Sindarin-Scripts}/SindarinScriptPointcutsExamples.class.st (100%) rename {Sindarin-Scripts => src/Sindarin-Scripts}/StepToNextDoIterationDbgScript.class.st (100%) rename {Sindarin-Scripts => src/Sindarin-Scripts}/StepUntilAboutToSignalExceptionDbgScript.class.st (100%) rename {Sindarin-Scripts => src/Sindarin-Scripts}/TDebuggerScript.trait.st (100%) rename {Sindarin-Scripts => src/Sindarin-Scripts}/TSindarinScriptInterpreter.trait.st (100%) rename {Sindarin-Scripts => src/Sindarin-Scripts}/package.st (100%) rename {Sindarin-Tests => src/Sindarin-Tests}/SindarinDebugSessionMock.class.st (100%) rename {Sindarin-Tests => src/Sindarin-Tests}/SindarinDebugSessionTest.class.st (100%) rename {Sindarin-Tests => src/Sindarin-Tests}/SindarinDebuggerTest.class.st (100%) rename {Sindarin-Tests => src/Sindarin-Tests}/package.st (100%) rename {Sindarin => src/Sindarin}/Context.extension.st (100%) rename {Sindarin => src/Sindarin}/ContextNotOnStack.class.st (100%) rename {Sindarin => src/Sindarin}/DebugSession.extension.st (100%) rename {Sindarin => src/Sindarin}/DebuggedExecutionException.class.st (100%) rename {Sindarin => src/Sindarin}/DebuggedExecutionIsFinished.class.st (100%) rename {Sindarin => src/Sindarin}/InstructionStream.extension.st (100%) rename {Sindarin => src/Sindarin}/NodeNotInASTError.class.st (100%) rename {Sindarin => src/Sindarin}/NotValidPcError.class.st (100%) rename {Sindarin => src/Sindarin}/OCBytecodeToASTCache.extension.st (100%) rename {Sindarin => src/Sindarin}/Object.extension.st (100%) rename {Sindarin => src/Sindarin}/Process.extension.st (100%) rename {Sindarin => src/Sindarin}/RBAssignmentNode.extension.st (100%) rename {Sindarin => src/Sindarin}/RBBlockDefinitionSearchingVisitor.class.st (100%) rename {Sindarin => src/Sindarin}/RBBlockNode.extension.st (100%) rename {Sindarin => src/Sindarin}/RBMessageNode.extension.st (100%) rename {Sindarin => src/Sindarin}/RBMethodNode.extension.st (100%) rename {Sindarin => src/Sindarin}/RBProgramNode.extension.st (100%) rename {Sindarin => src/Sindarin}/RBReturnNode.extension.st (100%) rename {Sindarin => src/Sindarin}/SindarinDebugSession.class.st (100%) rename {Sindarin => src/Sindarin}/SindarinDebugger.class.st (100%) rename {Sindarin => src/Sindarin}/SindarinSkippingReturnWarning.class.st (100%) rename {Sindarin => src/Sindarin}/SindarinUILessDebugger.class.st (100%) rename {Sindarin => src/Sindarin}/SteppingATerminatingProcess.class.st (100%) rename {Sindarin => src/Sindarin}/UnhandledExceptionSignalledByADebuggedExecution.class.st (100%) rename {Sindarin => src/Sindarin}/package.st (100%) diff --git a/LowLevelAPI.md b/doc/LowLevelAPI.md similarity index 100% rename from LowLevelAPI.md rename to doc/LowLevelAPI.md diff --git a/doc/README.md b/doc/README.md new file mode 100644 index 0000000..29c50d9 --- /dev/null +++ b/doc/README.md @@ -0,0 +1,25 @@ +# Sindarin +Instanciate a UI-less debugger on your execution, allowing you to manipulate and inspect it via scripting. +The API is on the `SindarinDebugger` class. + +- Original author: **Thomas Dupriez** (dupriezt on github) +- Research paper: [Sindarin: A Versatile Scripting API for the Pharo Debugger](https://hal.archives-ouvertes.fr/hal-02280915) + +## Usage + +```Smalltalk +dbg := SindarinDebugger debug: []. +"Manipulate and inspect the debugged execution by sending messages to dbg" +dbg step; stepOver. +dbg context inspect. +dbg currentNode inspect. +... +``` + +## Install +```Smalltalk +Metacello new + baseline: 'Sindarin'; + repository: 'github://dupriezt/ScriptableDebugger'; + load. +``` diff --git a/SindarinInterpreterAPI.md b/doc/SindarinInterpreterAPI.md similarity index 100% rename from SindarinInterpreterAPI.md rename to doc/SindarinInterpreterAPI.md diff --git a/src/.DS_Store b/src/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..cadea09a62a72ea29320e932aa7793d4fd1a511f GIT binary patch literal 8196 zcmeHMzfaph6n;k;B2W-QsLH_Lu|i^CMo12Ki5f&yLuXu^ z$DyF{eeSt7W3Q|L75GG5I-yf~M{npb7cCdW0dYVa5C_Boao}%o0Bbh4+K6@E+?As^ zAPziB2Y7x6&>2IEsX;w;;GjzY;4CidhI7;bniE(IEv5!F70)!)gR)d*OAKY`xF2vh zFtnH&G;~siPRfp~Y=xrq=->r9oK$E~j^cngkavJ<_a$o5KJ`(zyY+iZ*YX|QIpeeL z(R!<$#69x}bzhYiCsB0JO%4!Wd%wDKId^xnRh`?Jn%g^e^9?X0W|&e<*WZg`-25LO zK41O#sq@c0D^3Qvmc@B_nMtfZoENQ8gtrk>;=5jdM202NZmx}u%fG#SI>(OX>YIe;>-x&NUXIg+@8>SwX+N)V>0(m8tM~WYOz%WFxZ0aW%I}w&fu@JD#z1dH%t6drHKPW4!kg*8(jZykN*9Ch$SDz z0de4eazM>St*8k_qm~QarUvMH=-fCiHK-{#=$$N3m*c?fABH#&5Xzj;Vrmdq(Ej)j e0nYx+-N$(ACbq6 Date: Thu, 30 Mar 2023 15:22:56 +0200 Subject: [PATCH 2/7] Update .project --- .project | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.project b/.project index 5e7754f..7c4006d 100644 --- a/.project +++ b/.project @@ -1,3 +1,3 @@ { - 'srcDirectory' : '' -} \ No newline at end of file + 'srcDirectory' : 'src' +} From 0e9e02baeb6e20243da357ee9974def20d8808e0 Mon Sep 17 00:00:00 2001 From: adri09070 <97704417+adri09070@users.noreply.github.com> Date: Thu, 30 Mar 2023 15:27:38 +0200 Subject: [PATCH 3/7] Update .smalltalk.ston --- .smalltalk.ston | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.smalltalk.ston b/.smalltalk.ston index 4c1e1f3..94dd110 100644 --- a/.smalltalk.ston +++ b/.smalltalk.ston @@ -2,7 +2,7 @@ SmalltalkCISpec { #loading : [ SCIMetacelloLoadSpec { #baseline : 'Sindarin', - #directory : '.', + #directory : 'src', #load : 'default', #onConflict : #useIncoming, #onUpgrade : #useIncoming, From 1cd1cfdb4387af3492ef0220800f93c862b3496c Mon Sep 17 00:00:00 2001 From: adri09070 <97704417+adri09070@users.noreply.github.com> Date: Thu, 30 Mar 2023 15:27:59 +0200 Subject: [PATCH 4/7] Update .smalltalk.release.ston --- .smalltalk.release.ston | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.smalltalk.release.ston b/.smalltalk.release.ston index 38788f3..1e93f5a 100644 --- a/.smalltalk.release.ston +++ b/.smalltalk.release.ston @@ -2,7 +2,7 @@ SmalltalkCISpec { #loading : [ SCIMetacelloLoadSpec { #baseline : 'Sindarin', - #directory : '.', + #directory : 'src', #onConflict : #useIncoming, #onUpgrade : #useIncoming, #ignoreImage : true From 6418ec3d20b4bfccf357ff23e68964a7e91be7d0 Mon Sep 17 00:00:00 2001 From: adri09070 <97704417+adri09070@users.noreply.github.com> Date: Thu, 30 Mar 2023 15:28:26 +0200 Subject: [PATCH 5/7] Update .smalltalk.all.ston --- .smalltalk.all.ston | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.smalltalk.all.ston b/.smalltalk.all.ston index b129b2a..e1cb0f9 100644 --- a/.smalltalk.all.ston +++ b/.smalltalk.all.ston @@ -2,7 +2,7 @@ SmalltalkCISpec { #loading : [ SCIMetacelloLoadSpec { #baseline : 'Sindarin', - #directory : '.', + #directory : 'src', #load : 'default', #onConflict : #useIncoming, #onUpgrade : #useIncoming, From ac706a7c8714f08d56d1a993fab44a7f9f31cf12 Mon Sep 17 00:00:00 2001 From: adri09070 <97704417+adri09070@users.noreply.github.com> Date: Thu, 30 Mar 2023 15:31:04 +0200 Subject: [PATCH 6/7] Update .project --- .project | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.project b/.project index 7c4006d..9afb7f9 100644 --- a/.project +++ b/.project @@ -1,3 +1,4 @@ { - 'srcDirectory' : 'src' + 'srcDirectory' : 'src', + 'tags' : [ #system ] } From a195d30e738c9496ca147d1a17f611be9a465b5d Mon Sep 17 00:00:00 2001 From: adri09070 <97704417+adri09070@users.noreply.github.com> Date: Thu, 30 Mar 2023 15:39:55 +0200 Subject: [PATCH 7/7] Update .project --- .project | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.project b/.project index 9afb7f9..7c4006d 100644 --- a/.project +++ b/.project @@ -1,4 +1,3 @@ { - 'srcDirectory' : 'src', - 'tags' : [ #system ] + 'srcDirectory' : 'src' }