gdbinit, pretty-printers и соответствующие каталоги? - PullRequest
3 голосов
/ 03 августа 2011

В моем ~/.gdbinit я хотел бы иметь возможность ссылаться на симпатичные принтеры Python GDB, установленные в моем домашнем каталоге, по относительному пути:

python
import sys
# 1, works
sys.path.insert(0, '/home/<username>/.gdb_viz')
# 2, doesn't work
# sys.path.insert(0, '~/.gdb_viz')
# 3, doesn't work
# sys.path.insert(0, '.gdb_viz')
from libstdcxx.v6.printers import register_libstdcxx_printers
register_libstdcxx_printers (None)
end 

~/.gdb_viz содержит каталог libstdcxx исвязанные файлы Python.

Как мне заставить работать что-то вроде # 2 или # 3?

РЕДАКТИРОВАТЬ: Кроме постоянного запуска gdb из моего домашнего каталога:)

Общая информация / вывод GDB:

GNU gdb (GDB) 7.1-ubuntu
Copyright (C) 2010 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-linux-gnu".
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>...

вывод "работает":

Reading symbols from <executable>...done.

вывод "не работает":

Traceback (most recent call last):
  File "<string>", line 3, in <module>
ImportError: No module named libstdcxx.v6.printers
/home/<username>/.gdbinit:6: Error in sourced command file:
Error while executing Python code.
Reading symbols from <executable>...done.

Ответы [ 2 ]

3 голосов
/ 03 августа 2011

Не проверено, но должно работать:

python
import sys, os

sys.path.insert(0, os.getenv('HOME') + '/.gdb_viz')
1 голос
/ 03 августа 2011

Я вставляю это в path_setup.py и запускаю source ~ / .gdb_viz / path_setup.py из моего .gdbinit, который не проверял 3).

# Add the path of this script to pythons search path. 
import os, sys

sys.path.append(os.path.expanduser(os.path.dirname(__file__)))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...