Voltron: Difference between revisions
(Created page with "Voltron is a powerful python front-end for gdb. == Install (manually) == This is the procedure to follow to install Voltron manually, for instance on a custom instance of...") |
|||
(3 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
Voltron is a powerful python front-end for [[gdb]]. |
Voltron is a powerful python front-end for [[gdb]]. |
||
== References == |
|||
* [https://github.com/snare/voltron Voltron GitHub] |
|||
* [https://github.com/snare/voltron/wiki Voltron Wiki] |
|||
How to customize/extend Voltron: |
|||
* [http://ho.ax/posts/2013/06/voltron-a-hacky-ui-for-gdb/ Voltron - a hacky UI for GDB] |
|||
* [http://ho.ax/posts/2014/12/building-voltron-views/ Building Voltron Views] |
|||
== Install (manually) == |
== Install (manually) == |
||
Line 36: | Line 44: | ||
Now, we are ready to install voltron module. We use <code>--no-deps</code> since we installed the dependencies ourselves. Use ''developer mode'' if you plan to modify voltron. |
Now, we are ready to install voltron module. We use <code>--no-deps</code> since we installed the dependencies ourselves. Use ''developer mode'' if you plan to modify voltron. |
||
<source lang=bash> |
<source lang=bash> |
||
git clone https://github.com/snare/voltron |
|||
cd voltron |
|||
pip install --user --no-deps . |
pip install --user --no-deps . |
||
pip install --user --no-deps -e . # To install in "developer mode" |
pip install --user --no-deps -e . # To install in "developer mode" |
||
Line 62: | Line 71: | ||
;Troubleshooting |
;Troubleshooting |
||
* Error <code>ImportError: cannot import name md5</code>. |
* Error <code>ImportError: cannot import name md5</code>. |
||
: This occurs on <code>import flask</code>. |
: This occurs on <code>import flask</code>. Running python in debug mode (<code>-v</code>), we see there is a problem around library file {{file|_hashlib.so}}. |
||
<source lang=bash> |
|||
/path/to/your/python -v -c "import flask" 2>&1 | egrep -i "hashlib|error" | head |
|||
# # /home/peetersm/stm/stxp70_toolset_2016.1.2/python/lib/python2.7/hashlib.pyc matches /home/peetersm/stm/stxp70_toolset_2016.1.2/python/lib/python2.7/hashlib.py |
|||
# import hashlib # precompiled from /home/peetersm/stm/stxp70_toolset_2016.1.2/python/lib/python2.7/hashlib.pyc |
|||
# dlopen("/home/peetersm/stm/stxp70_toolset_2016.1.2/python/lib/python2.7/lib-dynload/_hashlib.so", 2); |
|||
# ERROR:root:code for hash md5 was not found. |
|||
# File "/home/peetersm/stm/stxp70_toolset_2016.1.2/python/lib/python2.7/hashlib.py", line 147, in <module> |
|||
# File "/home/peetersm/stm/stxp70_toolset_2016.1.2/python/lib/python2.7/hashlib.py", line 97, in __get_builtin_constructor |
|||
# raise ValueError('unsupported hash type ' + name) |
|||
# ValueError: unsupported hash type md5 |
|||
# ERROR:root:code for hash sha1 was not found. |
|||
# File "/home/peetersm/stm/stxp70_toolset_2016.1.2/python/lib/python2.7/hashlib.py", line 147, in <module> |
|||
</source> |
|||
:Looking at the library dependencies using <code>ldd</code>, we have: |
|||
<source lang=bash> |
<source lang=bash> |
||
locate _hashlib.so |
locate _hashlib.so |
||
Line 74: | Line 97: | ||
# /lib/ld-linux.so.2 (0x5659b000) |
# /lib/ld-linux.so.2 (0x5659b000) |
||
</source> |
</source> |
||
: Looking on the internet, we find reference of {{file|libssl.so.6}} and {{file|libcrypto |
: Looking on the internet, we find reference of {{file|libssl.so.6}} and {{file|libcrypto.so.6}} on RedHat 6, related to OpenSSL 0.9.8e. On Ubuntu, we find similar libraries in package {{deb|libssl}} from Ubuntu Precise LTS 12.04 32-bit. |
||
<source lang=bash> |
<source lang=bash> |
||
wget http://security.ubuntu.com/ubuntu/pool/universe/o/openssl098/libssl0.9.8_0.9.8o-7ubuntu3.2_i386.deb |
wget http://security.ubuntu.com/ubuntu/pool/universe/o/openssl098/libssl0.9.8_0.9.8o-7ubuntu3.2_i386.deb |
||
Line 80: | Line 103: | ||
sudo cp ./tmp/lib/i386-linux-gnu/libssl.so.0.9.8 /lib/i386-linux-gnu/libssl.so.6 |
sudo cp ./tmp/lib/i386-linux-gnu/libssl.so.0.9.8 /lib/i386-linux-gnu/libssl.so.6 |
||
sudo cp ./tmp/lib/i386-linux-gnu/libcrypto.so.0.9.8 /lib/i386-linux-gnu/libcrypto.so.6 |
sudo cp ./tmp/lib/i386-linux-gnu/libcrypto.so.0.9.8 /lib/i386-linux-gnu/libcrypto.so.6 |
||
rm -rf tmp |
|||
</source> |
</source> |
||
Latest revision as of 09:10, 30 November 2016
Voltron is a powerful python front-end for gdb.
References
How to customize/extend Voltron:
Install (manually)
This is the procedure to follow to install Voltron manually, for instance on a custom instance of gdb or on an offline pc. This procedure follows the file install.sh from voltron repository.
- Install apt dependencies
# From voltron/install.sh
sudo apt-get -y install libreadline6-dev python-dev python-setuptools python-yaml python-pip
# To fix error "missing library libncursesw.so.5"
sudo apt-get -y install libncursesw5 # On 32-bit python, use libncursesw5:i386
- Install python dependencies
Here we install in user local site (--user
).
# Extra dependency for requests_unixsocket
pip install --user pbr
# To fix error "ImportError: No module named pkg_resources" when importing scruffy
pip install --user setuptools
# From voltron/install.sh
pip install --user 'scruffington>=0.3.6' flask flask_restful blessed pygments requests requests_unixsocket six pysigset pygments
- Check dependencies
We can check some dependencies before installing voltron. Start your gdb and run the following commands. These should run without errors. If not, check the troubleshooting section.
>>> pi import scruffy
>>> pi import flask
- Install voltron module
Now, we are ready to install voltron module. We use --no-deps
since we installed the dependencies ourselves. Use developer mode if you plan to modify voltron.
git clone https://github.com/snare/voltron
cd voltron
pip install --user --no-deps .
pip install --user --no-deps -e . # To install in "developer mode"
Source voltron from ~/.gdbinit. For the path, either point to the site-package, or to the voltron repository if installed in developer mode.
source /path/to/your/voltron/entry.py
Finally, add the following to ~/.bashrc:
# set PATH to include users' .local/bin if it exists
if [ -d "${HOME}/.local/bin" ] ; then
PATH="${HOME}/.local/bin:${PATH}"
fi
Or alternatively:
alias voltron=~/.local/bin/voltron
- Installing on offline PC
- Use
apt-offline
to transfer apt packages. - Use
pip download
to download pip packages (see Python).
- Troubleshooting
- Error
ImportError: cannot import name md5
.
- This occurs on
import flask
. Running python in debug mode (-v
), we see there is a problem around library file _hashlib.so.
/path/to/your/python -v -c "import flask" 2>&1 | egrep -i "hashlib|error" | head
# # /home/peetersm/stm/stxp70_toolset_2016.1.2/python/lib/python2.7/hashlib.pyc matches /home/peetersm/stm/stxp70_toolset_2016.1.2/python/lib/python2.7/hashlib.py
# import hashlib # precompiled from /home/peetersm/stm/stxp70_toolset_2016.1.2/python/lib/python2.7/hashlib.pyc
# dlopen("/home/peetersm/stm/stxp70_toolset_2016.1.2/python/lib/python2.7/lib-dynload/_hashlib.so", 2);
# ERROR:root:code for hash md5 was not found.
# File "/home/peetersm/stm/stxp70_toolset_2016.1.2/python/lib/python2.7/hashlib.py", line 147, in <module>
# File "/home/peetersm/stm/stxp70_toolset_2016.1.2/python/lib/python2.7/hashlib.py", line 97, in __get_builtin_constructor
# raise ValueError('unsupported hash type ' + name)
# ValueError: unsupported hash type md5
# ERROR:root:code for hash sha1 was not found.
# File "/home/peetersm/stm/stxp70_toolset_2016.1.2/python/lib/python2.7/hashlib.py", line 147, in <module>
- Looking at the library dependencies using
ldd
, we have:
locate _hashlib.so
ldd /path/to/your/_hashlib.so
# linux-gate.so.1 => (0xf77c3000)
# libssl.so.6 => not found
# libcrypto.so.6 => not found
# libpython2.7.so.1.0 => not found
# libpthread.so.0 => /lib/i386-linux-gnu/libpthread.so.0 (0xf776a000)
# libc.so.6 => /lib/i386-linux-gnu/libc.so.6 (0xf75b3000)
# /lib/ld-linux.so.2 (0x5659b000)
- Looking on the internet, we find reference of libssl.so.6 and libcrypto.so.6 on RedHat 6, related to OpenSSL 0.9.8e. On Ubuntu, we find similar libraries in package libssl from Ubuntu Precise LTS 12.04 32-bit.
wget http://security.ubuntu.com/ubuntu/pool/universe/o/openssl098/libssl0.9.8_0.9.8o-7ubuntu3.2_i386.deb
dpkg -x libssl0.9.8_0.9.8o-7ubuntu3.2_i386.deb tmp
sudo cp ./tmp/lib/i386-linux-gnu/libssl.so.0.9.8 /lib/i386-linux-gnu/libssl.so.6
sudo cp ./tmp/lib/i386-linux-gnu/libcrypto.so.0.9.8 /lib/i386-linux-gnu/libcrypto.so.6
rm -rf tmp
- Error
ImportError: No module named pkg_resources
.
- Install python package setuptools (see Python).