Отличный ответ от Ciro Santill. Однако для работы с моим GDB 8.0.1 скрипту потребовалось небольшое исправление.
Я также изменил его, чтобы скопировать текст в буфер обмена, чтобы сразу использовать его в vim. Он прекрасно работает с плагином file_line.vim . Это пример содержимого буфера обмена, созданного сценарием:
/home/ops1/projects/test01/main.cpp:5
Сценарий ниже:
import pyperclip
class Clippath (gdb.Command):
"""print absolute path"""
def __init__(self):
super(Clippath, self).__init__("clippath", gdb.COMMAND_USER)
def invoke(self, arg, from_tty):
symtabline = gdb.selected_frame().find_sal()
pyperclip.copy(symtabline.symtab.fullname() + ":" + str(symtabline.line))
Clippath()
Вот шаги, чтобы заставить это все работать:
- Установить pyperclip python-библиотеку
sudo zypper в python3-pyperclip
- Сохраните приведенный выше скрипт в файл, скажем file-path.py и скопируйте его в ~ / .gdb
- Обновите ~ / .gdbinit, добавив следующие строки:
источник ~ / .gdb / file-path.py
- Теперь вы можете скопировать путь и строку в буфер обмена с помощью
clippath
в gdb
Подробнее о API GDB Python - ссылка