README.md
author Jan Vrany <jan.vrany@labware.com>
Tue, 22 Aug 2023 11:38:01 +0100
changeset 307 17a6a8329a8f
parent 259 651864c2aa29
child 308 2f4c59d35518
permissions -rw-r--r--
Update README.md
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
139
6e2f0594a5c5 Add `READNE.md`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     1
# libgdbs
6e2f0594a5c5 Add `READNE.md`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     2
152
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 139
diff changeset
     3
*libgdbs* is a library providing smalltalk interface for GDB.
139
6e2f0594a5c5 Add `READNE.md`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     4
6e2f0594a5c5 Add `READNE.md`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     5
## Features
6e2f0594a5c5 Add `READNE.md`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     6
6e2f0594a5c5 Add `READNE.md`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     7
 * event-based interface
6e2f0594a5c5 Add `READNE.md`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     8
 * convenient API to inspect and query current state of a debugee
307
17a6a8329a8f Update README.md
Jan Vrany <jan.vrany@labware.com>
parents: 259
diff changeset
     9
 * support for custom disassemblers allowing for custom code analysis (not part
216
800057dbad30 Update README
Jan Vrany <jan.vrany@labware.com>
parents: 161
diff changeset
    10
   of *libgdbs*)
800057dbad30 Update README
Jan Vrany <jan.vrany@labware.com>
parents: 161
diff changeset
    11
800057dbad30 Update README
Jan Vrany <jan.vrany@labware.com>
parents: 161
diff changeset
    12
## Example Use
152
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 139
diff changeset
    13
307
17a6a8329a8f Update README.md
Jan Vrany <jan.vrany@labware.com>
parents: 259
diff changeset
    14
```
17a6a8329a8f Update README.md
Jan Vrany <jan.vrany@labware.com>
parents: 259
diff changeset
    15
| b0 thread frame i r |
17a6a8329a8f Update README.md
Jan Vrany <jan.vrany@labware.com>
parents: 259
diff changeset
    16
17a6a8329a8f Update README.md
Jan Vrany <jan.vrany@labware.com>
parents: 259
diff changeset
    17
"Create new debugger object - `gdb`."
17a6a8329a8f Update README.md
Jan Vrany <jan.vrany@labware.com>
parents: 259
diff changeset
    18
gdb := GDBDebugger new.
17a6a8329a8f Update README.md
Jan Vrany <jan.vrany@labware.com>
parents: 259
diff changeset
    19
17a6a8329a8f Update README.md
Jan Vrany <jan.vrany@labware.com>
parents: 259
diff changeset
    20
"Load an executable to debug, the parameter is a String
17a6a8329a8f Update README.md
Jan Vrany <jan.vrany@labware.com>
parents: 259
diff changeset
    21
 with path to the executable."
17a6a8329a8f Update README.md
Jan Vrany <jan.vrany@labware.com>
parents: 259
diff changeset
    22
gdb executable: GDBDebuggeesResource current binaryFactorial1.
17a6a8329a8f Update README.md
Jan Vrany <jan.vrany@labware.com>
parents: 259
diff changeset
    23
17a6a8329a8f Update README.md
Jan Vrany <jan.vrany@labware.com>
parents: 259
diff changeset
    24
"Set breakpoint on function `factorial(int)`, see`factorial.c`(*).
17a6a8329a8f Update README.md
Jan Vrany <jan.vrany@labware.com>
parents: 259
diff changeset
    25
 Here we use `GDBDebugger >> #send:` to send a standard CLI command
17a6a8329a8f Update README.md
Jan Vrany <jan.vrany@labware.com>
parents: 259
diff changeset
    26
 to `gdb`. The method blocks and returns once the command is executed.
17a6a8329a8f Update README.md
Jan Vrany <jan.vrany@labware.com>
parents: 259
diff changeset
    27
 See class `GDBDebugger`, protocol 'commands' for more ways to send a
17a6a8329a8f Update README.md
Jan Vrany <jan.vrany@labware.com>
parents: 259
diff changeset
    28
 command to GDB.
17a6a8329a8f Update README.md
Jan Vrany <jan.vrany@labware.com>
parents: 259
diff changeset
    29
17a6a8329a8f Update README.md
Jan Vrany <jan.vrany@labware.com>
parents: 259
diff changeset
    30
 (*) https://jan.vrany.io/hg/jv-libgdbs/file/tip/tests/c/factorial1.c
17a6a8329a8f Update README.md
Jan Vrany <jan.vrany@labware.com>
parents: 259
diff changeset
    31
"
17a6a8329a8f Update README.md
Jan Vrany <jan.vrany@labware.com>
parents: 259
diff changeset
    32
gdb send: 'b factorial'.
17a6a8329a8f Update README.md
Jan Vrany <jan.vrany@labware.com>
parents: 259
diff changeset
    33
17a6a8329a8f Update README.md
Jan Vrany <jan.vrany@labware.com>
parents: 259
diff changeset
    34
"You may ask `gdb` for list of breakpoints, ..."
17a6a8329a8f Update README.md
Jan Vrany <jan.vrany@labware.com>
parents: 259
diff changeset
    35
gdb breakpoints.
17a6a8329a8f Update README.md
Jan Vrany <jan.vrany@labware.com>
parents: 259
diff changeset
    36
17a6a8329a8f Update README.md
Jan Vrany <jan.vrany@labware.com>
parents: 259
diff changeset
    37
"...retrieve a breakpoint as an object..."
17a6a8329a8f Update README.md
Jan Vrany <jan.vrany@labware.com>
parents: 259
diff changeset
    38
b0 := gdb breakpoints first.
17a6a8329a8f Update README.md
Jan Vrany <jan.vrany@labware.com>
parents: 259
diff changeset
    39
17a6a8329a8f Update README.md
Jan Vrany <jan.vrany@labware.com>
parents: 259
diff changeset
    40
"...and then use breakpoint object to get details
17a6a8329a8f Update README.md
Jan Vrany <jan.vrany@labware.com>
parents: 259
diff changeset
    41
 for example on what file and line the breakpoint was
17a6a8329a8f Update README.md
Jan Vrany <jan.vrany@labware.com>
parents: 259
diff changeset
    42
 put:"
17a6a8329a8f Update README.md
Jan Vrany <jan.vrany@labware.com>
parents: 259
diff changeset
    43
'location is %1 : %2' bindWith: b0 file with: b0 line.
17a6a8329a8f Update README.md
Jan Vrany <jan.vrany@labware.com>
parents: 259
diff changeset
    44
17a6a8329a8f Update README.md
Jan Vrany <jan.vrany@labware.com>
parents: 259
diff changeset
    45
"Breakpoint objects can also be used to manipulate it,
17a6a8329a8f Update README.md
Jan Vrany <jan.vrany@labware.com>
parents: 259
diff changeset
    46
 for example to set a condition when the breakpoint should
17a6a8329a8f Update README.md
Jan Vrany <jan.vrany@labware.com>
parents: 259
diff changeset
    47
 hit. See class `GDBBreakpoint`. "
17a6a8329a8f Update README.md
Jan Vrany <jan.vrany@labware.com>
parents: 259
diff changeset
    48
b0 condition: 'i == 1'.
216
800057dbad30 Update README
Jan Vrany <jan.vrany@labware.com>
parents: 161
diff changeset
    49
307
17a6a8329a8f Update README.md
Jan Vrany <jan.vrany@labware.com>
parents: 259
diff changeset
    50
"Now let's run debuggee util it hits the breakpoint using
17a6a8329a8f Update README.md
Jan Vrany <jan.vrany@labware.com>
parents: 259
diff changeset
    51
 GDB's `r` (or `run`) command. Here we (have to) use a different
17a6a8329a8f Update README.md
Jan Vrany <jan.vrany@labware.com>
parents: 259
diff changeset
    52
 API than plain `#send: - `#send:` executes the command and return
17a6a8329a8f Update README.md
Jan Vrany <jan.vrany@labware.com>
parents: 259
diff changeset
    53
 as soon as the command is executed. This is not what we want now,
17a6a8329a8f Update README.md
Jan Vrany <jan.vrany@labware.com>
parents: 259
diff changeset
    54
 here we want to run the debuggee and wait until breakpoint hits
17a6a8329a8f Update README.md
Jan Vrany <jan.vrany@labware.com>
parents: 259
diff changeset
    55
 (or until some error occur). In theory, this could be hours after
17a6a8329a8f Update README.md
Jan Vrany <jan.vrany@labware.com>
parents: 259
diff changeset
    56
 the `r` command is executed.
17a6a8329a8f Update README.md
Jan Vrany <jan.vrany@labware.com>
parents: 259
diff changeset
    57
17a6a8329a8f Update README.md
Jan Vrany <jan.vrany@labware.com>
parents: 259
diff changeset
    58
 For cases like this, libgdb's provides another API:
17a6a8329a8f Update README.md
Jan Vrany <jan.vrany@labware.com>
parents: 259
diff changeset
    59
 `GDBDebugger >> send:andWaitFor:` to wait for 'stopped' event:"
17a6a8329a8f Update README.md
Jan Vrany <jan.vrany@labware.com>
parents: 259
diff changeset
    60
gdb send: 'r' andWaitFor: GDBStoppedEvent.
17a6a8329a8f Update README.md
Jan Vrany <jan.vrany@labware.com>
parents: 259
diff changeset
    61
17a6a8329a8f Update README.md
Jan Vrany <jan.vrany@labware.com>
parents: 259
diff changeset
    62
"Now let's see where we have stopped. Since GDB allows
17a6a8329a8f Update README.md
Jan Vrany <jan.vrany@labware.com>
parents: 259
diff changeset
    63
 to debug multiple processes (called inferiors in GDB parlance)
17a6a8329a8f Update README.md
Jan Vrany <jan.vrany@labware.com>
parents: 259
diff changeset
    64
 and each process may have multiple threads, we have to first get
17a6a8329a8f Update README.md
Jan Vrany <jan.vrany@labware.com>
parents: 259
diff changeset
    65
 a the thread and then ask the thread for first (newest) frame of
17a6a8329a8f Update README.md
Jan Vrany <jan.vrany@labware.com>
parents: 259
diff changeset
    66
 threads callstack. In this case, there' only one process with
17a6a8329a8f Update README.md
Jan Vrany <jan.vrany@labware.com>
parents: 259
diff changeset
    67
 only one thread, so getting the thread is easy.
139
6e2f0594a5c5 Add `READNE.md`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    68
307
17a6a8329a8f Update README.md
Jan Vrany <jan.vrany@labware.com>
parents: 259
diff changeset
    69
 Note, that there's always a callstack with at least one frame."
17a6a8329a8f Update README.md
Jan Vrany <jan.vrany@labware.com>
parents: 259
diff changeset
    70
thread := gdb selectedInferior threads first.
17a6a8329a8f Update README.md
Jan Vrany <jan.vrany@labware.com>
parents: 259
diff changeset
    71
frame := thread stack first.
17a6a8329a8f Update README.md
Jan Vrany <jan.vrany@labware.com>
parents: 259
diff changeset
    72
17a6a8329a8f Update README.md
Jan Vrany <jan.vrany@labware.com>
parents: 259
diff changeset
    73
"Again, thread and frame are objects and can be used to access
17a6a8329a8f Update README.md
Jan Vrany <jan.vrany@labware.com>
parents: 259
diff changeset
    74
 program state"
17a6a8329a8f Update README.md
Jan Vrany <jan.vrany@labware.com>
parents: 259
diff changeset
    75
frame func.    " -> 'factorial'"
17a6a8329a8f Update README.md
Jan Vrany <jan.vrany@labware.com>
parents: 259
diff changeset
    76
i := frame variables first.
17a6a8329a8f Update README.md
Jan Vrany <jan.vrany@labware.com>
parents: 259
diff changeset
    77
i name.        " -> 'i' "
17a6a8329a8f Update README.md
Jan Vrany <jan.vrany@labware.com>
parents: 259
diff changeset
    78
i value.       " -> '1' "
17a6a8329a8f Update README.md
Jan Vrany <jan.vrany@labware.com>
parents: 259
diff changeset
    79
17a6a8329a8f Update README.md
Jan Vrany <jan.vrany@labware.com>
parents: 259
diff changeset
    80
r := frame registers first.
17a6a8329a8f Update README.md
Jan Vrany <jan.vrany@labware.com>
parents: 259
diff changeset
    81
r name.        " -> 'rax' (depending on target architecture, of course) "
17a6a8329a8f Update README.md
Jan Vrany <jan.vrany@labware.com>
parents: 259
diff changeset
    82
r value.
17a6a8329a8f Update README.md
Jan Vrany <jan.vrany@labware.com>
parents: 259
diff changeset
    83
17a6a8329a8f Update README.md
Jan Vrany <jan.vrany@labware.com>
parents: 259
diff changeset
    84
"Finally, remove all breakpoints and let the program continue and finish..."
17a6a8329a8f Update README.md
Jan Vrany <jan.vrany@labware.com>
parents: 259
diff changeset
    85
gdb send: 'del'.
17a6a8329a8f Update README.md
Jan Vrany <jan.vrany@labware.com>
parents: 259
diff changeset
    86
gdb send: 'c' andWaitFor: GDBThreadGroupExitedEvent.
17a6a8329a8f Update README.md
Jan Vrany <jan.vrany@labware.com>
parents: 259
diff changeset
    87
```
216
800057dbad30 Update README
Jan Vrany <jan.vrany@labware.com>
parents: 161
diff changeset
    88
800057dbad30 Update README
Jan Vrany <jan.vrany@labware.com>
parents: 161
diff changeset
    89
For more examples, load `jv:libgdbs/tests` and see `GDBDebuggerExamples`. You may also
800057dbad30 Update README
Jan Vrany <jan.vrany@labware.com>
parents: 161
diff changeset
    90
want to have a look at tests `GDBDebuggerTestsR`.
800057dbad30 Update README
Jan Vrany <jan.vrany@labware.com>
parents: 161
diff changeset
    91
800057dbad30 Update README
Jan Vrany <jan.vrany@labware.com>
parents: 161
diff changeset
    92
## Getting Started...
800057dbad30 Update README
Jan Vrany <jan.vrany@labware.com>
parents: 161
diff changeset
    93
800057dbad30 Update README
Jan Vrany <jan.vrany@labware.com>
parents: 161
diff changeset
    94
### ...on Linux
800057dbad30 Update README
Jan Vrany <jan.vrany@labware.com>
parents: 161
diff changeset
    95
800057dbad30 Update README
Jan Vrany <jan.vrany@labware.com>
parents: 161
diff changeset
    96
1.  Create a directory where to download and install all components - in following
800057dbad30 Update README
Jan Vrany <jan.vrany@labware.com>
parents: 161
diff changeset
    97
	steps we use `/where/you/want/it` but naturally, choice is yours:
800057dbad30 Update README
Jan Vrany <jan.vrany@labware.com>
parents: 161
diff changeset
    98
800057dbad30 Update README
Jan Vrany <jan.vrany@labware.com>
parents: 161
diff changeset
    99
        mkdir -p /where/you/want/it
800057dbad30 Update README
Jan Vrany <jan.vrany@labware.com>
parents: 161
diff changeset
   100
        cd /where/you/want/it
800057dbad30 Update README
Jan Vrany <jan.vrany@labware.com>
parents: 161
diff changeset
   101
307
17a6a8329a8f Update README.md
Jan Vrany <jan.vrany@labware.com>
parents: 259
diff changeset
   102
2.  Get suitable GDB. Stock GDB 13 and later should be fine.
139
6e2f0594a5c5 Add `READNE.md`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   103
216
800057dbad30 Update README
Jan Vrany <jan.vrany@labware.com>
parents: 161
diff changeset
   104
    Alternatively, you may want to build suitable GDB from sources, see
800057dbad30 Update README
Jan Vrany <jan.vrany@labware.com>
parents: 161
diff changeset
   105
    [doc/GDB.md][9] for details.
800057dbad30 Update README
Jan Vrany <jan.vrany@labware.com>
parents: 161
diff changeset
   106
307
17a6a8329a8f Update README.md
Jan Vrany <jan.vrany@labware.com>
parents: 259
diff changeset
   107
3.  Get [Smalltalk/X jv-branch][3]. Pre-build "toy" binaries for Linux
17a6a8329a8f Update README.md
Jan Vrany <jan.vrany@labware.com>
parents: 259
diff changeset
   108
    can be found at [https://jan.vrany.io/download/smalltalkx/devel][5]:
216
800057dbad30 Update README
Jan Vrany <jan.vrany@labware.com>
parents: 161
diff changeset
   109
307
17a6a8329a8f Update README.md
Jan Vrany <jan.vrany@labware.com>
parents: 259
diff changeset
   110
        wget https://dl.vrany.io/public/smalltalkx/devel//YYYY-MM-DD_NNN/smalltalkx-jv-branch-8.0.99_buildNNN_x86_64-pc-linux-gnu.tar.bz2
216
800057dbad30 Update README
Jan Vrany <jan.vrany@labware.com>
parents: 161
diff changeset
   111
        tar xf smalltalkx-jv-branch-8.0.99_buildNNN_x86_64-pc-linux-gnu.tar.bz2
800057dbad30 Update README
Jan Vrany <jan.vrany@labware.com>
parents: 161
diff changeset
   112
        rm smalltalkx-jv-branch-8.0.99_buildNNN_x86_64-pc-linux-gnu.tar.bz2
800057dbad30 Update README
Jan Vrany <jan.vrany@labware.com>
parents: 161
diff changeset
   113
800057dbad30 Update README
Jan Vrany <jan.vrany@labware.com>
parents: 161
diff changeset
   114
    Alternatively, you may want to build Smalltalk/X from sources, see
800057dbad30 Update README
Jan Vrany <jan.vrany@labware.com>
parents: 161
diff changeset
   115
    [build instructions][12]. This is actually preferred way to work with
800057dbad30 Update README
Jan Vrany <jan.vrany@labware.com>
parents: 161
diff changeset
   116
    Smalltalk/X.
152
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 139
diff changeset
   117
216
800057dbad30 Update README
Jan Vrany <jan.vrany@labware.com>
parents: 161
diff changeset
   118
4.  Get *jv:libgdbs*:
800057dbad30 Update README
Jan Vrany <jan.vrany@labware.com>
parents: 161
diff changeset
   119
800057dbad30 Update README
Jan Vrany <jan.vrany@labware.com>
parents: 161
diff changeset
   120
        mkdir -p jv
307
17a6a8329a8f Update README.md
Jan Vrany <jan.vrany@labware.com>
parents: 259
diff changeset
   121
        hg clone https://jan.vrany.io/hg/jv-libgdbs jv/libgdbs
216
800057dbad30 Update README
Jan Vrany <jan.vrany@labware.com>
parents: 161
diff changeset
   122
800057dbad30 Update README
Jan Vrany <jan.vrany@labware.com>
parents: 161
diff changeset
   123
5.  Start Smalltalk/X:
800057dbad30 Update README
Jan Vrany <jan.vrany@labware.com>
parents: 161
diff changeset
   124
800057dbad30 Update README
Jan Vrany <jan.vrany@labware.com>
parents: 161
diff changeset
   125
        ./smalltalkx-jv-branch-8.0.99_buildNNN_x86_64-pc-linux-gnu/bin/stx --package-path /where/you/want/it
800057dbad30 Update README
Jan Vrany <jan.vrany@labware.com>
parents: 161
diff changeset
   126
800057dbad30 Update README
Jan Vrany <jan.vrany@labware.com>
parents: 161
diff changeset
   127
    Please note, that `/where/you/want/it` should be the path to where you
800057dbad30 Update README
Jan Vrany <jan.vrany@labware.com>
parents: 161
diff changeset
   128
    created `jv` directory in which libgdbs has been cloned in step 3.
800057dbad30 Update README
Jan Vrany <jan.vrany@labware.com>
parents: 161
diff changeset
   129
800057dbad30 Update README
Jan Vrany <jan.vrany@labware.com>
parents: 161
diff changeset
   130
6.  In Smalltalk/X workspace, load `jv:libgdbs` and set path to suitable GDB:
800057dbad30 Update README
Jan Vrany <jan.vrany@labware.com>
parents: 161
diff changeset
   131
800057dbad30 Update README
Jan Vrany <jan.vrany@labware.com>
parents: 161
diff changeset
   132
		Smalltalk loadPackage: 'jv:libgdbs'.
800057dbad30 Update README
Jan Vrany <jan.vrany@labware.com>
parents: 161
diff changeset
   133
        UserPreferences current gdbCommand: '/where/you/want/it/gdb_x86_64-pc-linux-gnu_YYYY-MM-DD_XXXXXXXX_NN/bin/gdb'.
800057dbad30 Update README
Jan Vrany <jan.vrany@labware.com>
parents: 161
diff changeset
   134
800057dbad30 Update README
Jan Vrany <jan.vrany@labware.com>
parents: 161
diff changeset
   135
7.  Now you may create an instance of GDB to play with - in Smalltalk/X
800057dbad30 Update README
Jan Vrany <jan.vrany@labware.com>
parents: 161
diff changeset
   136
    workspace execute:
800057dbad30 Update README
Jan Vrany <jan.vrany@labware.com>
parents: 161
diff changeset
   137
800057dbad30 Update README
Jan Vrany <jan.vrany@labware.com>
parents: 161
diff changeset
   138
        gdb := GDBDebugger new.
800057dbad30 Update README
Jan Vrany <jan.vrany@labware.com>
parents: 161
diff changeset
   139
800057dbad30 Update README
Jan Vrany <jan.vrany@labware.com>
parents: 161
diff changeset
   140
### ...on Windows
800057dbad30 Update README
Jan Vrany <jan.vrany@labware.com>
parents: 161
diff changeset
   141
800057dbad30 Update README
Jan Vrany <jan.vrany@labware.com>
parents: 161
diff changeset
   142
For installing on Windows, see [doc/GettingStartedOnWindows.md][13]
152
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 139
diff changeset
   143
161
4e020e46a29c Added some documentation
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 152
diff changeset
   144
## Documentation
4e020e46a29c Added some documentation
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 152
diff changeset
   145
4e020e46a29c Added some documentation
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 152
diff changeset
   146
Some documentation can be found in [doc][10] directory, see [doc/README.md][10]
4e020e46a29c Added some documentation
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 152
diff changeset
   147
139
6e2f0594a5c5 Add `READNE.md`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   148
## Reporting issues
6e2f0594a5c5 Add `READNE.md`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   149
6e2f0594a5c5 Add `READNE.md`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   150
Use [Smalltalk/X jv-branch issue tracker][6] to [report issues][7] (you may need
6e2f0594a5c5 Add `READNE.md`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   151
to login using your Google account in order to submit an issue). Alternatively,
152
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 139
diff changeset
   152
send a message to [Smalltalk/X mailing list][8].
139
6e2f0594a5c5 Add `READNE.md`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   153
6e2f0594a5c5 Add `READNE.md`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   154
## Author
6e2f0594a5c5 Add `READNE.md`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   155
307
17a6a8329a8f Update README.md
Jan Vrany <jan.vrany@labware.com>
parents: 259
diff changeset
   156
Jan Vrany `<jan [at] vrany [.] io>`
139
6e2f0594a5c5 Add `READNE.md`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   157
6e2f0594a5c5 Add `READNE.md`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   158
## License
6e2f0594a5c5 Add `READNE.md`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   159
259
651864c2aa29 Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 216
diff changeset
   160
This software is licensed under *MIT license*.
139
6e2f0594a5c5 Add `READNE.md`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   161
You may find a full license text in `LICENSE.txt`.
6e2f0594a5c5 Add `READNE.md`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   162
6e2f0594a5c5 Add `READNE.md`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   163
[2]: https://www.gnu.org/software/gdb/
307
17a6a8329a8f Update README.md
Jan Vrany <jan.vrany@labware.com>
parents: 259
diff changeset
   164
[3]: https://jan.vrany.io/stx
139
6e2f0594a5c5 Add `READNE.md`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   165
[4]: https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git
307
17a6a8329a8f Update README.md
Jan Vrany <jan.vrany@labware.com>
parents: 259
diff changeset
   166
[5]: https://dl.vrany.io/public/smalltalkx/devel
17a6a8329a8f Update README.md
Jan Vrany <jan.vrany@labware.com>
parents: 259
diff changeset
   167
[6]: https://jan.vrany.io/stx/report/9
17a6a8329a8f Update README.md
Jan Vrany <jan.vrany@labware.com>
parents: 259
diff changeset
   168
[7]: https://jan.vrany.io/stx/newticket
152
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 139
diff changeset
   169
[8]: https://groups.google.com/forum/#!forum/stx-jv
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 139
diff changeset
   170
[9]: doc/GDB.md
216
800057dbad30 Update README
Jan Vrany <jan.vrany@labware.com>
parents: 161
diff changeset
   171
[10]: doc/README.md
307
17a6a8329a8f Update README.md
Jan Vrany <jan.vrany@labware.com>
parents: 259
diff changeset
   172
[11]: https://jan.vrany.io/public/gdb
17a6a8329a8f Update README.md
Jan Vrany <jan.vrany@labware.com>
parents: 259
diff changeset
   173
[12]: https://jan.vrany.io/stx/wiki/Documentation/BuildingStXWithRakefiles
216
800057dbad30 Update README
Jan Vrany <jan.vrany@labware.com>
parents: 161
diff changeset
   174
[13]: doc/GettingStartedOnWindows.md