2014-11-24 2 views
-3

программа под живым env, ошибка сегментации некоторое время, я пытаюсь выполнить gdb файл coredump, , но не могу найти, что строка кода вызывает coredump.coredump at __correctly_grouped_prefixwc

Program terminated with signal 11, Segmentation fault. 
#0 0x00000038f3a41bf5 in __correctly_grouped_prefixwc() from /lib64/libc.so.6 
(gdb) bt 
#0 0x00000038f3a41bf5 in __correctly_grouped_prefixwc() from /lib64/libc.so.6 
#1 0x0000000000000000 in ??() 
(gdb) info r 
rax   0x1ac1b108  448901384 
rbx   0x2add423b4ff0 47129787322352 
rcx   0x2add48128640 47129885312576 
rdx   0x0  0 
rsi   0x1  1 
rdi   0x2add48000020 47129884098592 
rbp   0x2add3f1aef50 0x2add3f1aef50 
rsp   0x2add423b4ff0 0x2add423b4ff0 
r8    0x2  2 
r9    0x2  2 
r10   0x0  0 
r11   0x0  0 
r12   0x0  0 
r13   0x3  3 
r14   0x1000 4096 
r15   0x2add3f1b0000 47129734873088 
rip   0x38f3a41bf5  0x38f3a41bf5 <__correctly_grouped_prefixwc+165> 
eflags   0x10246 [ PF ZF IF RF ] 
cs    0x33  51 
ss    0x2b  43 
ds    0x0  0 
es    0x0  0 
fs    0x0  0 
gs    0x0  0 
fctrl   0x37f 895 
fstat   0x0  0 
ftag   0xffff 65535 
fiseg   0x0  0 
fioff   0xc54f06 12930822 
foseg   0x2add 10973 
fooff   0x423b3f00  1111179008 
fop   0x0  0 
mxcsr   0x1fa1 [ IE PE IM DM ZM OM UM PM ] 


cat /etc/redhat-release 
CentOS release 5.5 (Final) 

и я хочу отладить Glibc на уровне исходного кода, запустите yum install yum-utils установить программу DebugInfo установить. затем запустите sudo debuginfo-install glibc, результат следующий

Loaded plugins: fastestmirror 
Loading mirror speeds from cached hostfile 
* addons: centos.ustc.edu.cn 
* base: mirror.bit.edu.cn 
* extras: centos.ustc.edu.cn 
* updates: centos.ustc.edu.cn 
Checking for new repos for mirrors 
Could not find debuginfo for main pkg: glibc-2.5-123.x86_64 
Could not find debuginfo for main pkg: glibc-2.5-123.i686 
No debuginfo packages available to install 

, а затем я стараюсь не запускать yum search glibc-debuginfo

Loaded plugins: fastestmirror 
Loading mirror speeds from cached hostfile 
* addons: centos.ustc.edu.cn 
* base: mirrors.163.com 
* extras: centos.ustc.edu.cn 
* updates: centos.ustc.edu.cn 
Warning: No matches found for: glibc-debuginfo 
No Matches found 

не совпадающие снова.

я пытаюсь запустить yum search glibc

Loaded plugins: fastestmirror 
Loading mirror speeds from cached hostfile 
* addons: centos.ustc.edu.cn 
* base: mirrors.163.com 
* extras: centos.ustc.edu.cn 
* updates: centos.ustc.edu.cn 
================================================================================ Matched: glibc ================================================================================= 
compat-glibc.i386 : Compatibility C library 
compat-glibc.x86_64 : Compatibility C library 
compat-glibc-headers.x86_64 : Header files for development using standard C libraries. 
glibc.i686 : The GNU libc libraries. 
glibc.x86_64 : The GNU libc libraries. 
glibc-common.x86_64 : Common binaries and locale data for glibc 
glibc-devel.i386 : Object files for development using standard C libraries. 
glibc-devel.x86_64 : Object files for development using standard C libraries. 
glibc-headers.x86_64 : Header files for development using standard C libraries. 
glibc-utils.x86_64 : Development utilities from GNU C library 
kernel-headers.x86_64 : Header files for the Linux kernel for use by glibc 
nss_db.i386 : An NSS library for the Berkeley DB. 
nss_db.x86_64 : An NSS library for the Berkeley DB. 
yp-tools.x86_64 : NIS (or YP) client programs. 
yum-protect-packages.noarch : Yum plugin to prevents Yum from removing itself and other protected packages 

я пытаюсь запустить sudo yum install glibc-devel.x86_64 и GDB файл CoreDump снова, но отобразить следующую

Reading symbols from /lib64/libc.so.6...(no debugging symbols found)...done. 
Loaded symbols for /lib64/libc.so.6 

как я могу найти причину код строки CoreDump? Я пытаюсь Google, но не нашел, какие-либо идеи?

+0

что у нас наш точный вопрос? – tristan

+0

_ «любые идеи?» _ - Используйте отладчик. –

+0

Как я могу найти строку кода, вызывающую coredump? – Sleepwom

ответ

1

Во-первых, хотя ошибка __correctly_grouped_prefixwc вызвала ошибку сегментации, вполне вероятно, что ей были переданы неправильные аргументы из какой-либо другой части кода, возможно, strtod или strtol или что-то, что их вызвало. При этом говорится, как настроить вещи так, чтобы gdb мог показать строку исходного кода в __correctly_grouped_prefixwc, что вызвало ошибку сегментации.

Чтобы выполнить отладку на уровне исходного кода, вам нужна информация об отладке исполняемого или совместно используемого объекта и его исходный код. В общем, дистрибутивы Linux и Unix по умолчанию не включают их, чтобы сохранить пространство для хранения, но они делают их доступными как пакеты.

На CentOS, вам просто нужно установить DebugInfo пакет для каждого исполняемого файла или библиотеки вы заинтересованы. Для этого запустите

sudo yum install yum-utils 

, который установит программу debuginfo-install, а затем запустить

sudo debuginfo-install glibc 

Загрузить и установить пакет glibc-debuginfo-2.5-123 (номер версии может отличаться). Это установит среди многих других файлов /usr/lib/debug/lib64/libc.so.6.debug, /usr/lib/debug/lib64/libc-2.5.so.debug и /usr/src/debug/glibc-2.5-20061008T1257/stdlib/grouping.c, которые вам нужны.

debuginfo-install - это короткая программа python, которая позволяет создавать репозитории debuginfo и загружает и устанавливает пакет debuginfo, соответствующий пакету, который вы даете в качестве аргумента, плюс все его зависимости. В качестве альтернативы вы можете скачать пакеты debuginfo непосредственно с http://debuginfo.centos.org (или любых зеркал) и установить их с помощью rpm -i.

Вы упомянули, что получили ошибку Нет пакетов debuginfo, доступных для установки. Возможно, у вас нет настроенного debuginfo-репо.В моей системе CentOS 5, конфигурация находится в файле /etc/yum.repos.d/CentOS-Debuginfo.repo

# All debug packages from all the various CentOS-5 releases 
# are merged into a single repo, split by BaseArch 
# 
# Note: packages in the debuginfo repo are currently not signed 
# 

[base-debuginfo] 
name=CentOS-5 - Debuginfo 
baseurl=http://debuginfo.centos.org/5/$basearch/ 
gpgcheck=0 
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5 
enabled=0 

Для других выпусков, общие инструкции для добавления DebugInfo репо в this CentOS wiki article.

Смежные вопросы