|
Компьютерный форум OSzone.net » Linux и FreeBSD » Программирование в *nix » Точка входа |
|
Точка входа
|
Новый участник Сообщения: 37 |
Есть такая проблема: При запуске программы получается деление на ноль. Запускаю ее в gdb и ставлю точку останова на main. Результат - деление на ноль происходит до main. При этом нет никаких инициализаций глобальных переменных и нет никаких объектов (чистый Си).
Если точка входа где-то не там, то как ее вычислить? |
|
Отправлено: 01:07, 22-05-2005 |
info man howto Сообщения: 6958
|
Профиль | Сайт | Отправить PM | Цитировать Пожалуста, приведите лог gdb
Может это не дедение на ноль, а просто нет какой-нибудь динамической библиотеки ? |
------- Отправлено: 12:22, 22-05-2005 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 37
|
Профиль | Отправить 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 |
info man howto Сообщения: 6958
|
Профиль | Сайт | Отправить PM | Цитировать Что-то я никаких cf_gen и cf.data в RPM squid не вижу. А вот в src.rpm нашёл. Я думаю, у вас скорей всего ошибка в построения. Как я понимаю, вы строите пакет из тарбола, попробуйте построить вначале стандартный rpm из src.rpm - этим вы и зависимости проверите и увидите по файлу spec как до вас другие строили squid. А потом уже можно свои модификации вносить.
|
------- Отправлено: 07:53, 23-05-2005 | #4 |
Старожил Сообщения: 222
|
Профиль | Отправить PM | Цитировать
Тут происходит ошибка при операциях с плавающей точкой (в сопроцессоре). Невольно вкрадываются мысли следующего плана: не отключен ли сопроцессор в ядре и не битое ли это железо?
ТОлько почему эта ошибка выскакивает при целочисленном делении, понять не могу... |
|
------- Отправлено: 06:43, 26-05-2005 | #5 |
Новый участник Сообщения: 37
|
Профиль | Отправить 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
|
Профиль | Отправить PM | Цитировать Andrew S
а с веткой 2.5 такие же проблемы? как насчет готового пакета? |
------- Отправлено: 13:19, 12-09-2005 | #7 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
[решено] точка входа в процедуру не найдена | 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 |
|