dash/contrib/auto_gdb
MarcoFalke 17acd6b472
Merge #12987: tests/tools: Enable additional Python flake8 rules for automatic linting via Travis
643aad17fa Enable additional flake8 rules (practicalswift)
f020aca297 Minor Python cleanups to make flake8 pass with the new rules enabled (practicalswift)

Pull request description:

  Enabled rules:

  ```
  * E242: tab after ','
  * E266: too many leading '#' for block comment
  * E401: multiple imports on one line
  * E402: module level import not at top of file
  * E701: multiple statements on one line (colon)
  * E901: SyntaxError: invalid syntax
  * E902: TokenError: EOF in multi-line string
  * F821: undefined name 'Foo'
  * W293: blank line contains whitespace
  * W606: 'async' and 'await' are reserved keywords starting with Python 3.7
  ```

  Note to reviewers:
  * In general we don't allow whitespace cleanups to existing code, but in order to allow for enabling Travis checking for these rules a few smaller whitespace cleanups had to made as part of this PR.
  * Use [this `?w=1` link](https://github.com/bitcoin/bitcoin/pull/12987/files?w=1) to show a diff without whitespace changes.

  Before this commit:

  ```
  $ flake8 -qq --statistics --ignore=B,C,E,F,I,N,W --select=E112,E113,E115,E116,E125,E131,E133,E223,E224,E242,E266,E271,E272,E273,E274,E275,E304,E306,E401,E402,E502,E701,E702,E703,E714,E721,E741,E742,E743,F401,E901,E902,F402,F404,F406,F407,F601,F602,F621,F622,F631,F701,F702,F703,F704,F705,F706,F707,F811,F812,F821,F822,F823,F831,F841,W292,W293,W504,W601,W602,W603,W604,W605,W606 .
  5     E266 too many leading '#' for block comment
  4     E401 multiple imports on one line
  6     E402 module level import not at top of file
  5     E701 multiple statements on one line (colon)
  1     F812 list comprehension redefines 'n' from line 159
  4     F821 undefined name 'ConnectionRefusedError'
  28    W293 blank line contains whitespace
  ```

  After this commit:

  ```
  $ flake8 -qq --statistics --ignore=B,C,E,F,I,N,W --select=E112,E113,E115,E116,E125,E131,E133,E223,E224,E242,E266,E271,E272,E273,E274,E275,E304,E306,E401,E402,E502,E701,E702,E703,E714,E721,E741,E742,E743,F401,E901,E902,F402,F404,F406,F407,F601,F602,F621,F622,F631,F701,F702,F703,F704,F705,F706,F707,F811,F812,F821,F822,F823,F831,F841,W292,W293,W504,W601,W602,W603,W604,W605,W606 .
  $
  ```

Tree-SHA512: fc7d5e752298a50d4248afc620ee2c173135b4ca008e48e02913ac968e5a24a5fd5396926047ec62f1d580d537434ccae01f249bb2f3338fa59dc630bf97ca7a
Signed-off-by: pasta <pasta@dashboost.org>
2020-07-22 12:12:46 -05:00
..
common_helpers.py Merge #12987: tests/tools: Enable additional Python flake8 rules for automatic linting via Travis 2020-07-22 12:12:46 -05:00
dash_dbg.sh GDB automation with Python script to measure memory usage in dashd (#1609) 2018-10-23 14:15:08 +03:00
debug.gdb GDB automation with Python script to measure memory usage in dashd (#1609) 2018-10-23 14:15:08 +03:00
log_size.py Merge #12987: tests/tools: Enable additional Python flake8 rules for automatic linting via Travis 2020-07-22 12:12:46 -05:00
README.md GDB automation with Python script to measure memory usage in dashd (#1609) 2018-10-23 14:15:08 +03:00
simple_class_obj.py Merge #12987: tests/tools: Enable additional Python flake8 rules for automatic linting via Travis 2020-07-22 12:12:46 -05:00
stl_containers.py Merge #12987: tests/tools: Enable additional Python flake8 rules for automatic linting via Travis 2020-07-22 12:12:46 -05:00
test_used_size.gdb GDB automation with Python script to measure memory usage in dashd (#1609) 2018-10-23 14:15:08 +03:00
used_size.py Merge #12987: tests/tools: Enable additional Python flake8 rules for automatic linting via Travis 2020-07-22 12:12:46 -05:00

Contents

This directory contains tools to automatically get data about the memory consumption by some objects in dashd process with the help of GDB debugger.

dash_dbg.sh

This shell script attaches GDB to the running dashd process (should be built with debug info), executes debug.gdb script and detaches. By default it uses testnet settings, see script comments to attach it to mainnet dashd.

debug.gdb

Contains debugger instructions to execute during attach: loads python code and executes it for the objects we want to investigate.

log_size.py

Contains definition of the gdb command log_size. After this script loads it can be called from gdb command line or other gdb scripts. Command params: log_size arg0 arg1 arg0 - name of object whose memory will be written in log file arg1 - name of the log file Example:

log_size mnodeman "memlog.txt"

used_size.py

Contains definition of the gdb command used_size. After loading of this script it can be called from gdb command line or other gdb scripts. Command params: used_size arg0 arg1 arg0 - variable to store memory used by the object arg1 - name of object whose memory will be calculated and stored in the first argument Example:

>(gdb) set $size = 0
>(gdb) used_size $size mnodeman
>(gdb) p $size

stl_containers.py

Contains helper classes to calculate memory used by the STL containers (list, vector, map, set, pair).

simple_class_obj.py

Contains a helper class to calculate the memory used by an object as a sum of the memory used by its fields. All processed objects of such type are listed in the this file, you can add new types you are interested in to this list. If a type is not listed here, its size is the return of sizeof (except STL containers which are processed in stl_containers.py).

common_helpers.py

Several helper functions that are used in other python code.