mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-02-08 10:31:50 -05:00
Merge bitcoin/bitcoin#22226: doc: add unittest core dump instructions
12313382e6
doc: test: unittest segfault gdb (James O'Beirne) Pull request description: Quick note on how to get core dumps out of the unittests. ACKs for top commit: theStack: ACK12313382e6
Tree-SHA512: d749d9117f96af85f9053884c57df766ac1d29e57b2555d4fc63bd9dc29df47487954cee1c7cd78ee420ae1c9c7da7ddc9797b6c636ce7641eae20622eaa3fee
This commit is contained in:
commit
6401de0133
1 changed files with 26 additions and 0 deletions
|
@ -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
|
||||
```
|
||||
|
|
Loading…
Add table
Reference in a new issue