Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Linux и FreeBSD » Программирование в *nix » Точка входа

Ответить
Настройки темы
Точка входа

Новый участник


Сообщения: 37
Благодарности: 0

Профиль | Отправить PM | Цитировать


Есть такая проблема: При запуске программы получается деление на ноль. Запускаю ее в gdb и ставлю точку останова на main. Результат - деление на ноль происходит до main. При этом нет никаких инициализаций глобальных переменных и нет никаких объектов (чистый Си).
Если точка входа где-то не там, то как ее вычислить?

Отправлено: 01:07, 22-05-2005

 

Аватара для ruslandh

info man howto


Moderator


Сообщения: 6949
Благодарности: 383

Профиль | Сайт | Отправить PM | Цитировать


Пожалуста, приведите лог gdb
Может это не дедение на ноль, а просто нет какой-нибудь динамической библиотеки ?

-------
Поспешай не торопясь


Отправлено: 12:22, 22-05-2005 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Новый участник


Сообщения: 37
Благодарности: 0

Профиль | Отправить PM | Цитировать


Может быть и библиотеки нету, но тогда скрипт configure должен был об этом сообщить. Программа, собственно, - squid. Глюк происходит в Novell Linux Desktop 9 со всеми версиями сквида. При компиляции выдается следующее:

g++ -Werror -Wall -Wpointer-arith -Wwrite-strings -Wcomments -g -O2 -g -o cf_gen cf_gen.o -L/tmp/squid-3.0-PRE3-20050128/lib -lmiscutil -lm /usr/lib/libbind.so -lpthread -lnsl
./cf_gen cf.data
make[1]: *** [cf_parser.h] Floating point exception
make[1]: Leaving directory `/tmp/squid-3.0-PRE3-20050128/src'

Дамп отладчика:

#gdb ./cf_gen
GNU gdb 6.1
Copyright 2004 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB. Type "show warranty" for details.
This GDB was configured as "i586-suse-linux"...Using host libthread_db library "/lib/tls/libthread_db.so.1".

(gdb) set args cf.data
(gdb) r
Starting program: /tmp/squid-3.0-PRE3-20050128/src/cf_gen cf.data

Program received signal SIGFPE, Arithmetic exception.
0x40008cc2 in ?? ()
(gdb) p/a 0x40008cc2
$1 = 0x40008cc2
(gdb) b main
Breakpoint 1 at 0x8048d0c: file cf_gen.cc, line 156.
(gdb) r
The program being debugged has been started already.
Start it from the beginning? (y or n) y
Starting program: /tmp/squid-3.0-PRE3-20050128/src/cf_gen cf.data

Program received signal SIGFPE, Arithmetic exception.
0x40008cc2 in ?? ()
(gdb) p main
$2 = {int (int, char **)} 0x8048d00 <main>

Как видим, до main дело не дошло, адрес вылета никому известному не принадлежит.
И более глубоко:

(gdb) b 0x40008cc0
Function "0x40008cc0" not defined.
Make breakpoint pending on future shared library load? (y or [n]) y
Breakpoint 1 (0x40008cc0) pending.
(gdb) r
Starting program: /tmp/squid-3.0-PRE3-20050128/src/cf_gen cf.data

Program received signal SIGFPE, Arithmetic exception.
0x40008cc2 in ?? ()
(gdb) disas 0x40008cc0 0x40008cd0
Dump of assembler code from 0x40008cc0 to 0x40008cd0:
0x40008cc0: xor %edx,%edx
0x40008cc2: div %edi
0x40008cc4: imul %edi,%eax
0x40008cc7: sub %eax,%ecx
0x40008cc9: mov 0xffffffec(%ebp),%eax
0x40008ccc: sub %eax,%ecx
0x40008cce: mov 0xfffffff0(%ebp),%eax
End of assembler dump.
(gdb) i r
eax 0x58 88
ecx 0x58 88
edx 0x0 0
ebx 0x400166e0 1073833696
esp 0xbfffea58 0xbfffea58
ebp 0xbfffea70 0xbfffea70
esi 0x40017218 1073836568
edi 0x0 0
eip 0x40008cc2 0x40008cc2
eflags 0x210246 2163270
cs 0x73 115
ss 0x7b 123
ds 0x7b 123
es 0x7b 123
fs 0x0 0
gs 0x0 0
(gdb)

Вылет происходит на команде div %edi, который равен нулю
Есть какие-нибудь мысли?

Отправлено: 23:59, 22-05-2005 | #3


Аватара для ruslandh

info man howto


Moderator


Сообщения: 6949
Благодарности: 383

Профиль | Сайт | Отправить PM | Цитировать


Что-то я никаких cf_gen и cf.data в RPM squid не вижу. А вот в src.rpm нашёл. Я думаю, у вас скорей всего ошибка в построения. Как я понимаю, вы строите пакет из тарбола, попробуйте построить вначале стандартный rpm из src.rpm - этим вы и зависимости проверите и увидите по файлу spec как до вас другие строили squid. А потом уже можно свои модификации вносить.

-------
Поспешай не торопясь


Отправлено: 07:53, 23-05-2005 | #4


Старожил


Сообщения: 222
Благодарности: 2

Профиль | Отправить PM | Цитировать


Код: Выделить весь код
Program received signal SIGFPE, Arithmetic exception.
Тут происходит ошибка при операциях с плавающей точкой (в сопроцессоре). Невольно вкрадываются мысли следующего плана: не отключен ли сопроцессор в ядре и не битое ли это железо?

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

-------
FreeBSD 9.0-STABLE #0: Tue Mar 13 16:45:29 YEKT 2012
-------
@FrIcE


Отправлено: 06:43, 26-05-2005 | #5


Новый участник


Сообщения: 37
Благодарности: 0

Профиль | Отправить PM | Цитировать


Пробовал ставить src.rpm, удовлетворил все зависимости, но результат тот же.
Железо вроде не кривое, хотя иксы иногда падают. Если бы это было из-за железа, то ИМХО компилилось бы с разными глюками от случая к случаю, а ошибка проявляется всегда одна и та же.
Насчет сопроцессора - я не знаю название опции, поэтому привожу кусок файла /proc/config.gz (ядро 2.6.5-7.111, сборка не моя, а Novell). Кстати, если процессор - 586, то наверное поддержка сопроцессора должна быть по умолчанию (поскольку он встроенный), но ошибки бывают даже в таких прозрачных местах. Проц у меня P4 без HT.

CONFIG_X86_PC=y
# CONFIG_X86_ELAN is not set
# CONFIG_X86_VOYAGER is not set
# CONFIG_X86_NUMAQ is not set
# CONFIG_X86_SUMMIT is not set
# CONFIG_X86_BIGSMP is not set
# CONFIG_X86_VISWS is not set
# CONFIG_X86_GENERICARCH is not set
# CONFIG_X86_ES7000 is not set
# CONFIG_M386 is not set
# CONFIG_M486 is not set
CONFIG_M586=y
# CONFIG_M586TSC is not set
# CONFIG_M586MMX is not set
# CONFIG_M686 is not set
# CONFIG_MPENTIUMII is not set
# CONFIG_MPENTIUMIII is not set
# CONFIG_MPENTIUMM is not set
# CONFIG_MPENTIUM4 is not set
# CONFIG_MK6 is not set
# CONFIG_MK7 is not set
# CONFIG_MK8 is not set
# CONFIG_MCRUSOE is not set
# CONFIG_MWINCHIPC6 is not set
# CONFIG_MWINCHIP2 is not set
# CONFIG_MWINCHIP3D is not set
# CONFIG_MCYRIXIII is not set
# CONFIG_MVIAC3_2 is not set
CONFIG_X86_GENERIC=y
CONFIG_X86_CMPXCHG=y
CONFIG_X86_XADD=y
CONFIG_X86_L1_CACHE_SHIFT=7
CONFIG_RWSEM_XCHGADD_ALGORITHM=y
CONFIG_X86_PPRO_FENCE=y
CONFIG_X86_F00F_BUG=y
CONFIG_X86_WP_WORKS_OK=y
CONFIG_X86_INVLPG=y
CONFIG_X86_BSWAP=y
CONFIG_X86_POPAD_OK=y
CONFIG_X86_ALIGNMENT_16=y
CONFIG_X86_INTEL_USERCOPY=y
# CONFIG_HPET_TIMER is not set
# CONFIG_HPET_EMULATE_RTC is not set
# CONFIG_SMP is not set
# CONFIG_PREEMPT is not set
CONFIG_X86_UP_APIC=y
CONFIG_X86_UP_IOAPIC=y
CONFIG_X86_LOCAL_APIC=y
CONFIG_X86_IO_APIC=y
CONFIG_X86_MCE=y
# CONFIG_X86_MCE_NONFATAL is not set
CONFIG_X86_MCE_P4THERMAL=y
CONFIG_TOSHIBA=m
CONFIG_I8K=m
CONFIG_MICROCODE=m
CONFIG_X86_MSR=m
CONFIG_X86_CPUID=m

Отправлено: 23:21, 26-05-2005 | #6


Старожил


Сообщения: 345
Благодарности: 0

Профиль | Отправить PM | Цитировать


Andrew S
а с веткой 2.5 такие же проблемы?

как насчет готового пакета?

-------
Лучше молчать и казаться идиотом, чем заговорить и развеять сомнения...


Отправлено: 13:19, 12-09-2005 | #7



Компьютерный форум OSzone.net » Linux и FreeBSD » Программирование в *nix » Точка входа

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
[решено] точка входа в процедуру не найдена sneg-ura Лечение систем от вредоносных программ 8 13-12-2009 20:06
Ошибка - [решено] firefox.exe - Точка входа не найдена Arimli Microsoft Windows 2000/XP 3 30-10-2009 19:21
Ошибка - Точка входа не найдена TwiSSteR Microsoft Windows 2000/XP 1 04-06-2009 08:15
[решено] Точка входа не найдена(( x1 Microsoft Windows 2000/XP 3 10-06-2007 13:39
Ошибка - Точка входа не найдена Robert M Microsoft Windows 2000/XP 17 12-04-2006 22:52




 
Переход