Почему syslog и gdb показывают разные адреса загрузки для одной и той же общей библиотеки? - PullRequest
0 голосов
/ 10 октября 2018

Я столкнулся с ошибкой сегментации.Системный журнал сообщает следующее:

segfault at 0 ip 00000000f71ff256 sp 00000000f44fee50 error 4 in libprotobuf-c.so.0.0.0[f71f8000+f000]

Итак, libprotobuf-c.so загружен на 0xf71f8000.Когда я загрузил соответствующий файл ядра в gdb и попытался info sharedlibrary, он показывает FROM адрес как 0xf71f9f70, что отличается от показанного в системном журнале.Я не могу понять это несоответствие.Может ли кто-нибудь помочь, пожалуйста?

0xf71f9f70  0xf7204028  Yes (*)     /usr/lib/libprotobuf-c.so.0

1 Ответ

0 голосов
/ 10 октября 2018

Итак, libprotobuf-c.so загружен в 0xf71f8000.Когда я загрузил соответствующий файл ядра в gdb и попробовал info sharedlibrary, он показывает адрес FROM как 0xf71f9f70, что отличается от показанного в syslog.

На самом деле они равны ,GDB показывает начало .text как адрес From.

Если вы сделаете readelf -WS /usr/lib/libprotobuf-c.so.0 | grep '\.text', вы обнаружите, что .text начинается с 0xf71f9f70 - 0xf71f8000 == 0x1f70.

...