--- a/tests/GDBDebuggerTestsR.st Thu Oct 11 09:55:43 2018 +0200
+++ b/tests/GDBDebuggerTestsR.st Sat Oct 20 07:48:11 2018 +0100
@@ -52,7 +52,31 @@
documentation
"
- Tests for GDBDebugger (using real test programs)
+ Tests for GDBDebugger API.
+
+ # Custom Debugger Setup
+
+ By default, this tests spawns a default, locally run
+ debugger for each test (see GDBDebugger >> new). To customize
+ the debugger setup, set GDBDebuggerTestsR >> debuggerSetupBlock
+ returning a GDBDebugger instance with all the necessary setup
+ done. For example, to use externally run GDB over TCP socket:
+
+ * First, run 'GDB/MI server' (don't confuse with `gdbservver`!!)
+ run (in terminal):
+
+ socat TCP4-LISTEN:1234,FORK EXEC:'gdb -i mi2'
+
+ *
+
+
+
+
+
+
+
+
+
[author:]
Jan Vrany <jan.vrany@fit.cvut.cz>
@@ -79,9 +103,6 @@
test_02
| inferior1 thread1 frame1 frame2 seqNo1 seqNo2 |
- debugger := GDBDebugger new.
- self assert: debugger isConnected.
-
debugger executable: GDBDebuggeesResource current binaryFactorial1.
debugger send: 'b factorial'.
@@ -127,8 +148,8 @@
debugger send: 'quit' andWait: false.
"Created: / 28-02-2015 / 00:55:55 / Jan Vrany <jan.vrany@fit.cvut.cz>"
- "Modified: / 12-02-2018 / 22:50:52 / Jan Vrany <jan.vrany@fit.cvut.cz>"
"Modified: / 19-01-2018 / 09:23:24 / jv"
+ "Modified: / 18-10-2018 / 10:54:24 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
test_03
@@ -136,9 +157,6 @@
self skipIf: OperatingSystem isMSWINDOWSlike description: 'Skipped since we cannot interact with inferor on Windows (no TTY support)'.
- debugger := GDBDebugger new.
- self assert: debugger isConnected.
-
debugger executable: GDBDebuggeesResource current binaryPressAnyKey.
debugger send: (GDBMI_exec_run new).
@@ -160,14 +178,13 @@
debugger send: 'quit' andWait: false
"Created: / 08-03-2015 / 07:42:10 / Jan Vrany <jan.vrany@fit.cvut.cz>"
- "Modified: / 01-06-2017 / 22:30:03 / Jan Vrany <jan.vrany@fit.cvut.cz>"
"Modified: / 12-01-2018 / 14:53:19 / jv"
+ "Modified: / 18-10-2018 / 10:55:00 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
test_basic_01
| timeToExit eventPumpProcess eventDispatchProcess|
- debugger := GDBDebugger new.
timeToExit := 0.
eventPumpProcess := (debugger instVarNamed: #connection) instVarNamed: #eventPumpProcess.
eventDispatchProcess := (debugger instVarNamed: #connection) instVarNamed: #eventDispatchProcess.
@@ -186,16 +203,11 @@
self assert: eventDispatchProcess isDead.
"Created: / 24-06-2014 / 09:06:32 / Jan Vrany <jan.vrany@fit.cvut.cz>"
- "Modified: / 31-05-2017 / 22:42:45 / Jan Vrany <jan.vrany@fit.cvut.cz>"
"Modified: / 12-01-2018 / 15:29:08 / jv"
+ "Modified: / 18-10-2018 / 10:55:06 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
test_breakpoints_01a
- | |
-
- debugger := GDBDebugger new.
- self assert: debugger isConnected.
-
debugger executable: GDBDebuggeesResource current binaryFactorial1.
self assert: debugger breakpoints isEmpty.
@@ -216,14 +228,10 @@
debugger send: 'quit' andWait: false.
"Created: / 07-07-2017 / 12:25:52 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 18-10-2018 / 10:55:16 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
test_breakpoints_01b
- | |
-
- debugger := GDBDebugger new.
- self assert: debugger isConnected.
-
debugger executable: GDBDebuggeesResource current binaryFactorial1.
self assert: debugger breakpoints isEmpty.
@@ -244,14 +252,10 @@
debugger send: 'quit' andWait: false.
"Created: / 07-07-2017 / 12:27:12 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified (format): / 18-10-2018 / 10:55:23 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
test_breakpoints_01c
- | |
-
- debugger := GDBDebugger new.
- self assert: debugger isConnected.
-
debugger executable: GDBDebuggeesResource current binaryFactorial1.
self assert: debugger breakpoints isEmpty.
@@ -272,15 +276,36 @@
debugger send: 'quit' andWait: false.
"Created: / 07-07-2017 / 12:34:48 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 18-10-2018 / 10:55:30 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+test_breakpoints_02
+ debugger executable: GDBDebuggeesResource current binaryFactorial1.
+ self assert: debugger breakpoints isEmpty.
+
+ debugger send: 'b main'.
+ self assert: debugger breakpoints size == 1.
+
+ debugger send: 'r' andWaitFor: GDBStoppedEvent.
+ self assert: debugger breakpoints size == 1.
+
+ debugger send: 'del'.
+ self assert: debugger breakpoints isEmpty.
+
+ debugger send: 'c' andWaitFor: GDBThreadGroupExitedEvent.
+ self assert: debugger breakpoints isEmpty.
+
+ debugger send: 'quit' andWait: false.
+
+ "Created: / 07-07-2017 / 11:53:53 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 12-01-2018 / 22:04:46 / jv"
+ "Modified: / 18-10-2018 / 10:55:36 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
test_breakpoints_03a
self skipIf: OperatingSystem isMSWINDOWSlike description: 'Skipped since we don;t have separate console TTY (no TTY support)'.
- debugger := GDBDebugger new.
- self assert: debugger isConnected.
-
debugger executable: GDBDebuggeesResource current binaryFactorial1.
self assert: debugger breakpoints isEmpty.
@@ -303,14 +328,11 @@
debugger send: 'quit' andWait: false.
"Created: / 10-07-2017 / 22:05:07 / Jan Vrany <jan.vrany@fit.cvut.cz>"
- "Modified: / 11-07-2017 / 11:06:20 / Jan Vrany <jan.vrany@fit.cvut.cz>"
"Modified: / 12-01-2018 / 14:57:37 / jv"
+ "Modified: / 18-10-2018 / 10:55:43 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
test_breakpoints_04a
- debugger := GDBDebugger new.
- self assert: debugger isConnected.
-
debugger executable: GDBDebuggeesResource current binaryFactorial1.
self assert: debugger breakpoints isEmpty.
@@ -332,7 +354,7 @@
debugger send: 'quit' andWait: false.
"Created: / 11-07-2017 / 20:35:20 / Jan Vrany <jan.vrany@fit.cvut.cz>"
- "Modified (format): / 11-07-2017 / 23:31:56 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 18-10-2018 / 10:55:51 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
test_breakpoints_05a
@@ -349,9 +371,6 @@
"
self skipIf: true description: 'Known to fail due to a bug in GDB'.
- debugger := GDBDebugger new.
-
- self assert: debugger isConnected.
debugger executable: GDBDebuggeesResource current binaryBreakpoints1.
self assert: debugger breakpoints isEmpty.
@@ -388,15 +407,12 @@
debugger send: 'quit' andWait: false.
"Created: / 18-05-2018 / 10:52:10 / Jan Vrany <jan.vrany@fit.cvut.cz>"
- "Modified: / 23-05-2018 / 10:49:08 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 18-10-2018 / 10:56:05 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
test_directories
| directories current |
- debugger := GDBDebugger new.
- self assert: debugger isConnected.
-
directories := debugger directories.
self assert: directories isArray.
self assert: directories notEmpty.
@@ -416,12 +432,12 @@
"Created: / 09-03-2018 / 12:28:53 / Jan Vrany <jan.vrany@fit.cvut.cz>"
"Modified: / 03-04-2018 / 21:08:26 / jv"
+ "Modified: / 18-10-2018 / 10:56:13 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
test_disassembly_01
| asm |
- debugger := GDBDebugger new.
debugger executable: GDBDebuggeesResource current binaryFactorial1.
debugger send: 'r' andWaitFor: GDBThreadGroupExitedEvent.
@@ -433,12 +449,11 @@
debugger send: 'quit' andWait: false.
"Created: / 22-06-2018 / 11:52:03 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 18-10-2018 / 10:56:20 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
test_features
- debugger := GDBDebugger new.
- self assert: debugger isConnected.
self assert: debugger features isArray.
self assert: debugger features notEmpty.
self assert: (debugger hasFeature: debugger features anyOne).
@@ -448,13 +463,12 @@
debugger send: 'quit' andWait: false.
"Created: / 07-02-2018 / 10:56:59 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 18-10-2018 / 10:56:28 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
test_registers_01a
| stack rax rip rsp raxValue1 ripValue1 rspValue1 raxValue2 ripValue2 rspValue2 |
- debugger := GDBDebugger new.
- self assert: debugger isConnected.
debugger executable: GDBDebuggeesResource current binaryFactorial1.
debugger send: 'b factorial'.
debugger send: 'r' andWaitFor: GDBStoppedEvent.
@@ -500,7 +514,7 @@
debugger send: 'quit' andWait: false.
"Created: / 27-09-2018 / 10:45:20 / Jan Vrany <jan.vrany@fit.cvut.cz>"
- "Modified: / 27-09-2018 / 16:02:31 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 18-10-2018 / 10:56:33 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
test_stack_01a
@@ -509,8 +523,6 @@
| stack1 stack2 |
- debugger := GDBDebugger new.
- self assert: debugger isConnected.
debugger executable: GDBDebuggeesResource current binaryFactorial1.
debugger send: 'b factorial'.
debugger send: 'r' andWaitFor: GDBStoppedEvent.
@@ -543,6 +555,7 @@
debugger send: 'quit' andWait: false.
"Created: / 06-08-2018 / 15:06:34 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 18-10-2018 / 10:56:40 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
test_stack_01b
@@ -551,8 +564,6 @@
| stack1 pc1 stack2 pc2 |
- debugger := GDBDebugger new.
- self assert: debugger isConnected.
debugger executable: GDBDebuggeesResource current binaryFactorial1.
debugger send: 'b factorial'.
debugger send: 'r' andWaitFor: GDBStoppedEvent.
@@ -573,13 +584,12 @@
debugger send: 'quit' andWait: false.
"Created: / 06-08-2018 / 15:07:39 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 18-10-2018 / 10:57:40 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
test_stack_02
| stack1 stack2 |
- debugger := GDBDebugger new.
- self assert: debugger isConnected.
debugger executable: GDBDebuggeesResource current binaryVariables1.
debugger send: 'b set_data_i'.
debugger send: 'r' andWaitFor: GDBStoppedEvent.
@@ -596,7 +606,7 @@
debugger send: 'quit' andWait: false.
"Created: / 12-02-2018 / 21:46:48 / Jan Vrany <jan.vrany@fit.cvut.cz>"
- "Modified: / 15-02-2018 / 09:16:05 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 18-10-2018 / 10:57:45 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
test_stack_03
@@ -605,8 +615,6 @@
| stack2 selection |
- debugger := GDBDebugger new.
- self assert: debugger isConnected.
debugger executable: GDBDebuggeesResource current binaryFactorial1.
debugger send: 'b factorial'.
debugger send: 'r' andWaitFor: GDBStoppedEvent.
@@ -631,12 +639,12 @@
self assert: selection frame == stack2 third.
"Created: / 30-07-2018 / 07:07:48 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 18-10-2018 / 10:57:50 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
test_variables_01
| thread frame variables d |
- debugger := GDBDebugger new.
debugger executable: GDBDebuggeesResource current binaryVariables1.
debugger send: 'b main'.
@@ -688,7 +696,7 @@
debugger send: 'quit' andWait: false.
"Created: / 30-01-2018 / 10:27:40 / Jan Vrany <jan.vrany@fit.cvut.cz>"
- "Modified: / 13-02-2018 / 22:02:20 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 18-10-2018 / 10:57:56 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
test_variables_02
@@ -698,7 +706,6 @@
"
| variables1 variables2 |
- debugger := GDBDebugger new.
debugger executable: GDBDebuggeesResource current binaryVariables1.
debugger send: 'b main'.
@@ -719,6 +726,7 @@
debugger send: 'quit' andWait: false.
"Created: / 01-02-2018 / 21:45:03 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 18-10-2018 / 10:58:00 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
test_variables_03
@@ -727,7 +735,6 @@
"
| variables d d_i |
- debugger := GDBDebugger new.
debugger executable: GDBDebuggeesResource current binaryVariables1.
debugger send: 'b set_data_i'.
@@ -764,7 +771,7 @@
debugger send: 'quit' andWait: false.
"Created: / 01-02-2018 / 21:57:01 / Jan Vrany <jan.vrany@fit.cvut.cz>"
- "Modified: / 12-02-2018 / 22:36:53 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 18-10-2018 / 10:58:05 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
test_variables_04
@@ -774,7 +781,6 @@
"
| variables d d_as_i_a events seqNo1 seqNo2 |
- debugger := GDBDebugger new.
events := OrderedCollection new.
debugger announcer when: GDBEvent send: #add: to: events.
@@ -809,7 +815,7 @@
debugger send: 'quit' andWait: false.
"Created: / 04-02-2018 / 22:04:59 / Jan Vrany <jan.vrany@fit.cvut.cz>"
- "Modified: / 13-02-2018 / 10:15:18 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 18-10-2018 / 10:58:18 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
test_variables_05
@@ -819,7 +825,6 @@
"
| variables d |
- debugger := GDBDebugger new.
debugger executable: GDBDebuggeesResource current binaryVariables1.
debugger send: 'b set_data_i'.
@@ -850,6 +855,7 @@
debugger send: 'quit' andWait: false.
"Created: / 12-02-2018 / 21:34:04 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 18-10-2018 / 10:58:29 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
test_variables_06
@@ -858,7 +864,6 @@
"
| variables d1 d_i1 d_i2 |
- debugger := GDBDebugger new.
debugger executable: GDBDebuggeesResource current binaryVariables1.
debugger send: 'b set_data_i'.
@@ -903,14 +908,12 @@
debugger send: 'quit' andWait: false.
"Created: / 13-02-2018 / 22:27:13 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 18-10-2018 / 10:58:33 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
test_variables_07
| stack v1 v2 v3 |
- debugger := GDBDebugger new.
- self assert: debugger isConnected.
-
debugger executable: GDBDebuggeesResource current binaryFactorial1.
self assert: debugger breakpoints isEmpty.
@@ -941,6 +944,7 @@
debugger send: 'quit' andWait: false.
"Created: / 20-03-2018 / 22:32:00 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 18-10-2018 / 10:58:42 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
test_variables_08
@@ -949,11 +953,6 @@
"
| c1 c1_cdr c1_cdr_cdr |
-
-
- debugger := GDBDebugger new.
- self assert: debugger isConnected.
-
debugger executable: GDBDebuggeesResource current binaryPyVarobj.
self assert: debugger breakpoints isEmpty.
@@ -982,7 +981,7 @@
debugger send: 'quit' andWait: false.
"Created: / 01-06-2018 / 16:27:29 / Jan Vrany <jan.vrany@fit.cvut.cz>"
- "Modified (comment): / 04-06-2018 / 11:02:19 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 18-10-2018 / 10:58:50 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
test_variables_09
@@ -991,9 +990,6 @@
"
| c1 c1_cdr c1_cdr_d c1_cdr_d_cdr c1_cdr_d_cdr_d |
- debugger := GDBDebugger new.
- self assert: debugger isConnected.
-
debugger executable: GDBDebuggeesResource current binaryPyVarobj.
self assert: debugger breakpoints isEmpty.
@@ -1028,6 +1024,7 @@
debugger send: 'quit' andWait: false.
"Created: / 04-06-2018 / 15:08:29 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 18-10-2018 / 10:58:55 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
test_variables_10a
@@ -1036,9 +1033,6 @@
"
| stack |
- debugger := GDBDebugger new.
- self assert: debugger isConnected.
-
debugger executable: GDBDebuggeesResource current binaryFactorial1.
self assert: debugger breakpoints isEmpty.
@@ -1063,12 +1057,6 @@
debugger send: 'quit' andWait: false.
"Created: / 05-07-2018 / 11:48:58 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 18-10-2018 / 10:59:03 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !
-!GDBDebuggerTestsR class methodsFor:'documentation'!
-
-version_HG
-
- ^ '$Changeset: <not expanded> $'
-! !
-