docs(test): add more info on debugging with gdb #25230

This commit is contained in:
Sergey Slipchenko 2023-09-18 16:24:18 +04:00 committed by GitHub
parent 9cadbf1d36
commit 46402c16c0
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -102,9 +102,25 @@ Debugging tests
DBG 2022-06-15T18:37:45.229 T57.58016.0 read_cb:118: closing Stream (0x7fd5d700ea18): EOF (end of file) DBG 2022-06-15T18:37:45.229 T57.58016.0 read_cb:118: closing Stream (0x7fd5d700ea18): EOF (end of file)
INF 2022-06-15T18:37:45.229 T57.58016.0 on_process_exit:400: exited: pid=58017 status=0 stoptime=0 INF 2022-06-15T18:37:45.229 T57.58016.0 on_process_exit:400: exited: pid=58017 status=0 stoptime=0
``` ```
- You can set `$GDB` to [run tests under gdbserver](https://github.com/neovim/neovim/pull/1527). - You can set `$GDB` to [run functional tests under gdbserver](https://github.com/neovim/neovim/pull/1527):
And if `$VALGRIND` is set it will pass `--vgdb=yes` to valgrind instead of
```sh
GDB=1 TEST_FILE=test/functional/api/buffer_spec.lua TEST_FILTER='nvim_buf_set_text works$' make functionaltest
```
Read more about [filtering tests](#filtering-tests).
Then, in another terminal:
```sh
gdb -ex 'target remote localhost:7777' build/bin/nvim
```
If `$VALGRIND` is also set it will pass `--vgdb=yes` to valgrind instead of
starting gdbserver directly. starting gdbserver directly.
See [test/functional/helpers.lua](https://github.com/neovim/neovim/blob/9cadbf1d36b63f53f0de48c8c5ff6c752ff05d70/test/functional/helpers.lua#L52-L69) for details.
- Hanging tests can happen due to unexpected "press-enter" prompts. The - Hanging tests can happen due to unexpected "press-enter" prompts. The
default screen width is 50 columns. Commands that try to print lines longer default screen width is 50 columns. Commands that try to print lines longer
than 50 columns in the command-line, e.g. `:edit very...long...path`, will than 50 columns in the command-line, e.g. `:edit very...long...path`, will
@ -124,7 +140,7 @@ Filtering Tests
### Filter by name ### Filter by name
Another filter method is by setting a pattern of test name to `TEST_FILTER` or `TEST_FILTER_OUT`. Tests can be filtered by setting a pattern of test name to `TEST_FILTER` or `TEST_FILTER_OUT`.
``` lua ``` lua
it('foo api',function() it('foo api',function()