LINUX.ORG.RU

GDB не видит printf.c malloc.c и т.д.


0

1

Здравствуйте! Во время установки valgrind ввела команду sudo dpkg --configure -a. Не знаю стало ли это причиной, но теперь gdb при пошаговом проходе программы, когда нужно использовать malloc или printf или ещё какую-то функцию, пишет, что malloc.c, iofopen.c, printf.c нет. А я ничего так не удаляла. Настройки не меняла. Просто после установки valgrind решила пройтись отладчиком, а он арифметические команды выполняет, типа i =5; i++, а функции сишные - нет. Я даже не могу понять, где gdb ищет и не находит эти файлы. Помогите исправить это, пожалуйста, а нето совсем грустно.


А зачем делать s в printf?

yoghurt ★★★★★
()

во-первых тебе туда лезть не надо, а во-вторых если таки очень надо, то в нормальных дистрибутивах это решается установкой пакета glibc-debug

Reset ★★★★★
()

>Я даже не могу понять, где gdb ищет и не находит эти файлы.

В каталоге проекта, /usr/include или прочих include-каталогах. Но там этих файлов не должно быть (у меня, вроде, нет). Можно попробовать ещё раз 'dpkg --configure -a' или переустановить все пакеты. Если бы была Гента, я бы даже сказал, как найти недостающие файлы и их пакеты, но в Дебиане я этого не умею.

gentoo_root ★★★★★
()
Ответ на: комментарий от gentoo_root

А что надо переустановить, подскажите. Я скачала gdb-7.1, стала устанавливать, а он выдаёт ошибку и не заканчивает установку. Пишет: configure: error: no termcap library found.

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

>Я скачала gdb-7.1, стала устанавливать, а он выдаёт ошибку и не заканчивает установку. Пишет: configure: error: no termcap library found.

А действительно есть смысл собирать его из исходников? Если это Дебиан, не проще ли тогда из репозитория поставить (apt-get install gdb)? Тогда и зависимости недостающие доустановятся, и обновляться само будет. А если надо собирать из исходников, то лучше взять собираемый дистрибутив типа Генты, он автоматизирует процесс сборки. Но собирать вот так руками нежелательно, потому что при удалении пакета не получится вычистить все файлы за ним, если не знать весь список на память или не прибегнуть к костылям типа installwatch для его получения.

gentoo_root ★★★★★
()
Ответ на: комментарий от vasily_pupkin

vasily_pupkin, спасибо!!!!!!!!

Я ваш фанат! Получилось! )))))
А объясните, почему с s не выходит, а с n выходит, пожалуста. И вообще что это было? Работало, работало одним образом и вдруг другим. Странно так. Правильно говорят, что смое гениальное решение - всегда простое. Правда при пошаговом проходе в конце сообщение выдает:

libc_start_main (main=0x8048604 <main>, argc=2, ubp_av=0xbffff4c4,
init=0x8048c50 <__libc_csu_init>, fini=0x8048c40 <__libc_csu_fini>,
rtld_fini=0x11e030 <_dl_fini>, stack_end=0xbffff4bc) at libc-start.c:258
258   libc-start.c: Нет такого файла или каталога.
   in libc-start.c

Но оно как-то ни на ничто не влияет.
Спасибо ещё раз.

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

Спасибо за ответы. Если у меня и n перестанет работать, то я попробую собрать его из исходников.

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

Так у меня в руководстве написано step (s). Самое главное, что оно и работало нормально, пока я, видимо, не намудрила там что-то.

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

Прочитала. Но до меня, видимо, не доходит, так как: 1). Раньше проблем с s не было. 2). у меня next как раз останавливается на функциях, а в руководстве сказано про next, что next (или n) [n] --------- выполнить следующих n строк исходного текста программы (строки вызываемых функций в число n не включаются и останова в них не происходит) и остановиться. Не подумайте,что я с вами прерикаюсь, просто поясните в чем фишка, если знаете.

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

У тебя есть функция, и к ней нет дебаг символов => жмешь s - идешь мимо. У тебя есть функция, и к ней есть дебаг символы => жмешь s - попадаешь внутрь. Но у тебя нет исходников, о чем тебе gdb и сообщает. Ты жмешь s еще раз. Исходников до сих пор нет, но ты где то в функции ))

vasily_pupkin ★★★★★
()
Ответ на: комментарий от jenya

А работало раньше, потому что дебаг символов не было, а сейчас появился валгринд, и притянул зависимостями эти самые дебаг символы, скорее всего.

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