saide_a Ответов: 1

Как использовать valgrind для поиска ошибок сегментации?


У меня есть библиотека, которая работает вместе с исполняемым файлом, но у меня нет его источника.
когда я использую свою библиотеку я получаю ошибку ошибки сегментации
Я использовал valgrind, чтобы понять причину ошибки, но я не мог понять ее
Я думаю, что это произошло потому, что я не могу сделать исполняемый файл самостоятельно в режиме отладки
что вы предлагаете мне для поиска причины ошибки сегментации?
Большое спасибо

Что я уже пробовал:

Я запустил valgrind --track-origins ./myExecutable
выход есть :
Conditional jump or move depends on uninitialised value(s)
at 0x400BF71: _dl_relocate_object (in /lib/ld-2.13.so)
by 0x4003054: dl_main (in /lib/ld-2.13.so)
by 0x4014E9D: _dl_sysdep_start (in /lib/ld-2.13.so)
by 0x4004AD8: _dl_start (in /lib/ld-2.13.so)
by 0x4000806: ??? (in /lib/ld-2.13.so)
Uninitialised value was created by a stack allocation
at 0x400B3A6: _dl_relocate_object (in /lib/ld-2.13.so)

Richard MacCutchan

Без исходного кода будет чрезвычайно трудно найти причину. Если ошибка возникает в вашей библиотеке, то подключение отладчика может помочь.

Rick York

Ваше описание не совсем понятно. Какая вещь у вас не имеет источника? Это имеет большое значение в том, как вы подходите к отладке этой проблемы.

saide_a

У меня нет исполняемого файла, у меня есть только исходный файл библиотеки

1 Ответов

Рейтинг:
0

Stefan_Lang

В сообщении уже довольно ясно говорится о причине этой проблемы:

Цитата:
Условный прыжок или перемещение зависит от неинициализированного значения(ов)

и
Цитата:
Неинициализированное значение было создано распределением стека

их довольно трудно не понять.

Что касается расположения кода, ответственного за это распределение, то это то, что вам придется выяснить, основываясь на упомянутых символах. Это может быть так же просто, как попытка скопировать данные на адрес, указанный неинициализированным указателем.

Обратите внимание, что вы можете подключить отладчик к любой запущенной программе, независимо от того, как она была построена.

Тем не менее, что мешает вам запустить свой собственный код в отладчике?