Discussion:
Building GDB with PyPy?
(too old to reply)
Yichun Zhang (agentzh)
2014-08-06 00:46:16 UTC
Permalink
Hi folks!

Sorry if this is a dumb question.

I've been using the Python extension in gdb but the speed of the
Python code is very disappointing for large working set. I wonder if
it is possible to build gdb from source with pypy instead of the
cpython?

Using ./configure --with-python=`which pypy` fails for me with the
following error:

checking whether to use python... /bin/pypy
Traceback (most recent call last):
File "app_main.py", line 72, in run_toplevel
File "./python/python-config.py", line 66, in <module>
libs.append('-lpython'+pyver + abiflags)
TypeError: unsupported operand type(s) for +: 'str' and 'NoneType'
configure: error: failure running python-config --ldflags
make[1]: *** [configure-gdb] Error 1
make[1]: Leaving directory `/home/agentzh/Downloads/gdb-7.8'
make: *** [all] Error 2

Any pointers for solving this will be highly appreciated!

Hopefully PyPy can speed up my Python code running in gdb a lot. Just
want to give it a shot.

Thanks!
-agentzh
Pedro Alves
2014-08-19 14:22:44 UTC
Permalink
Post by Yichun Zhang (agentzh)
Hi folks!
Sorry if this is a dumb question.
I've been using the Python extension in gdb but the speed of the
Python code is very disappointing for large working set. I wonder if
it is possible to build gdb from source with pypy instead of the
cpython?
I have no idea if anyone ever done that, but if you succeed, don't
forget to let us know about it! :-)
Post by Yichun Zhang (agentzh)
Using ./configure --with-python=`which pypy` fails for me with the
checking whether to use python... /bin/pypy
File "app_main.py", line 72, in run_toplevel
File "./python/python-config.py", line 66, in <module>
libs.append('-lpython'+pyver + abiflags)
TypeError: unsupported operand type(s) for +: 'str' and 'NoneType'
configure: error: failure running python-config --ldflags
make[1]: *** [configure-gdb] Error 1
make[1]: Leaving directory `/home/agentzh/Downloads/gdb-7.8'
make: *** [all] Error 2
Any pointers for solving this will be highly appreciated!
Hopefully PyPy can speed up my Python code running in gdb a lot. Just
want to give it a shot.
--
Thanks,
Pedro Alves
Simon Marchi
2014-08-19 15:48:27 UTC
Permalink
So,

pyver = sysconfig.get_config_var('VERSION')

seems undefined (results in None) for PyPy. I replaced it with

pyver = sysconfig.get_config_var('VERSION') or
sysconfig.get_python_version()

as found in another project, and it seemed to go further. However, the
C api used by GDB seems specific to cpython. There are a lot of
functions not found in PyPy, such as Py_Initialize. I did not go any
further, it doesn't seem like a trivial task to make GDB work with
PyPy.

Here is an exceprt from compilation: http://pastebin.com/SJxdC00i

Simon
Post by Pedro Alves
Post by Yichun Zhang (agentzh)
Hi folks!
Sorry if this is a dumb question.
I've been using the Python extension in gdb but the speed of the
Python code is very disappointing for large working set. I wonder if
it is possible to build gdb from source with pypy instead of the
cpython?
I have no idea if anyone ever done that, but if you succeed, don't
forget to let us know about it! :-)
Post by Yichun Zhang (agentzh)
Using ./configure --with-python=`which pypy` fails for me with the
checking whether to use python... /bin/pypy
File "app_main.py", line 72, in run_toplevel
File "./python/python-config.py", line 66, in <module>
libs.append('-lpython'+pyver + abiflags)
TypeError: unsupported operand type(s) for +: 'str' and 'NoneType'
configure: error: failure running python-config --ldflags
make[1]: *** [configure-gdb] Error 1
make[1]: Leaving directory `/home/agentzh/Downloads/gdb-7.8'
make: *** [all] Error 2
Any pointers for solving this will be highly appreciated!
Hopefully PyPy can speed up my Python code running in gdb a lot. Just
want to give it a shot.
--
Thanks,
Pedro Alves
Loading...