diff options
author | James O'Beirne <james.obeirne@pm.me> | 2021-06-11 14:02:51 -0400 |
---|---|---|
committer | James O'Beirne <james.obeirne@pm.me> | 2021-09-16 18:02:55 -0400 |
commit | 12313382e60c84f106127566d004c03384ca5abf (patch) | |
tree | 1c7f007e0b573ee819f356554fbf68b7eba5f04d | |
parent | f66eceaecf464bfab5e19f3ca8fe680d8a6aa2e1 (diff) |
doc: test: unittest segfault gdb
Feedback from Jon Atack and Marco Falke.
-rw-r--r-- | src/test/README.md | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/src/test/README.md b/src/test/README.md index 57cda26d7c..d03411c3ed 100644 --- a/src/test/README.md +++ b/src/test/README.md @@ -74,3 +74,29 @@ start debugging, just like you would with any other program: ```bash gdb src/test/test_bitcoin ``` + +#### Segmentation faults + +If you hit a segmentation fault during a test run, you can diagnose where the fault +is happening by running `gdb ./src/test/test_bitcoin` and then using the `bt` command +within gdb. + +Another tool that can be used to resolve segmentation faults is +[valgrind](https://valgrind.org/). + +If for whatever reason you want to produce a core dump file for this fault, you can do +that as well. By default, the boost test runner will intercept system errors and not +produce a core file. To bypass this, add `--catch_system_errors=no` to the +`test_bitcoin` arguments and ensure that your ulimits are set properly (e.g. `ulimit -c +unlimited`). + +Running the tests and hitting a segmentation fault should now produce a file called `core` +(on Linux platforms, the file name will likely depend on the contents of +`/proc/sys/kernel/core_pattern`). + +You can then explore the core dump using +``` bash +gdb src/test/test_bitcoin core + +(gbd) bt # produce a backtrace for where a segfault occurred +``` |