LINUX.ORG.RU

Настройка клавиш в lldb

 


0

1

В репах ubuntu 14.04lts нету lldb-4.0 а он нужен для того, чтобы дебажить rust Поэтому, я прописал репозиторий trusty, как это рекомендуют на http://apt.llvm.org/ и поставил оттуда lldb-4.0

И оно вроде бы все работает, но в консольном lldb когда жмешь стрелки вверх-вниз вместо листания по истории выскакивают коды этих клавиш: «^[[A» - когда жмешь вверх, и «^[[B» - когда вниз.

При этом я пробовал ставить 3.9 и младше - там вверх-вниз работает. но rust нормально не дебажится.

вопрос. Что надо доставить, или где доконфигурить, чтобы в lldb заработала навигация по истории?

Ответ на: комментарий от vzzo

Пересобрал lldb их исходников. Это отдельный квест, но вобщем да. Я не очень понимаю, как она работает - но тоже подозреваю ее. Собраный lldb в этом отношении работает - но только мне там немножко пришлось поправить, чтобы оно откомпилилось. Вобщем, хочется остаться на бинарниках, поставленых из пакетов, т.к. нет уверенности что самособраное будет лучше. Поэтому, я собраное пытаюсь сравнить с пакетным. И вот что я заметил.

то что установлено у меня:

#ls /lib/x86_64-linux-gnu/ |grep readline

libreadline.so.5
libreadline.so.5.2
libreadline.so.6
libreadline.so.6.3

А вот lldb откомпилило свой ридлайн, и имя файла - readline.so Без префикса lib.

Но как его подсунуть туда - пока не придумал. Правда сегодня особо некогда было вникать глубже. Сейчас буду пытаться поставить readline 7 из исхов.

chabapok
() автор топика
Ответ на: комментарий от vzzo

Собрал и установил readline7 Не помогло...

По всей видимости, зависимость на это readline у него не статическая, а эту либу оно загружает динамически. Но как найти, какое имя файла и откуда оно пытается загрузить - я не знаю.

Теоретически, в этом может помочь systemtap. Штука эта мощная, но в ней надо знать, какой именно вызов ты хочешь распечатать... Как это узнать, у меня пока нет идей.

chabapok
() автор топика
Ответ на: комментарий от chabapok

А вот lldb откомпилило свой ридлайн, и имя файла - readline.so Без префикса lib.

Скорее всего, это модуль для Python.

Я сильно сомневаюсь, что программы из проекта LLVM будут использовать readline, ибо он под GPL. Поиск в интернете говорит, что там используется libedit, недавнее обновление которого поломало ввод в lldb у многих пользователей: https://bugs.archlinux.org/task/49974

Попробуй поставить более старую версию libedit.

i-rinat ★★★★★
()
Последнее исправление: i-rinat (всего исправлений: 1)
Ответ на: комментарий от vzzo

нет... readline.so это какой-то промежуточный файл. Даже если его стереть - то ничего дополнительно не ломается.

Фиг его знает. Сделал такой скрипт:

probe process("/lib/x86_64-linux-gnu/libdl.so.2").function("__dlopen") {
    printf("dlopen %s\n", $$vars)
}

probe syscall.open {
    printf("open %s\n", filename)
}

probe syscall.open.return {
    printf("ret %d\n", $return )
}

запуск от рута: `stap -v dlopen.stp` и дальше запуск lldb-4.0

Несколько странно, что libdl содержит dlopen, но так не компилится, нужно обязательно два подчеркивания __dlopen Не знаю, как это может быть.

вцелом же, ни в варианте из пакетов ни в самособранном про readline упоминаний нет.

chabapok
() автор топика
Ответ на: комментарий от i-rinat

Хм. Попробовал какую-то версию 2004 года. Не помогло.

Есть подозрение, что это просто lldb криво собран. Т.к. собраная liblldb локально занимает 75мегов (и компилилась она в релизном режиме), а из пакетов - 25мб.

chabapok
() автор топика
Ответ на: комментарий от i-rinat

ааа! Нашел! Последний камент по вашей ссылке. Сделали фикс, который чинит это - но ломает стрелки. У меня и есть поломанные стрелки. Видимо, поэтому.

chabapok
() автор топика
Ответ на: комментарий от i-rinat

strip не делал. 75мб после компиляции. Только что попробовал сделать strip - после него занимает 60мб.

chabapok
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.