LINUX.ORG.RU

в чем сила дебаггера ?


0

0

Программа на Си падает в core, дебаггер указывает вот на такую строчку:

int a;
a = 1; <---

То есть он гонит. Собственно вопросы: 

1) А может это я гоню ?
2) Возможно ли, что дебаггер (gdb) врет со строчкой вылета в core ?




Скорее всего, ты случайно исходники изменил.

> 2) Возможно ли, что дебаггер (gdb) врет со строчкой вылета в core ?

Встречался с таким в некоторых версиях gdb (несколько лет назад последний раз) на ЦеППшных прогах.

Еще варианты: испортился стек, и &a оказалось на несуществующей странице (не соображу сразу, возможно ли такое); неудачные игры с munmap; то же с mprotect.

Die-Hard ★★★★★
()
Ответ на: комментарий от Die-Hard

> испортился стек, и &a оказалось на несуществующей странице (не соображу сразу, возможно ли такое);

конечно, достаточно испортить содержимое esp

idle ★★★★★
()
Ответ на: комментарий от aton

>Причин может быть масса, без кода, все равно что пальцем в небо тыкать

почему масса?
по-моему только одна - кривой код.

anonymous
()
Ответ на: комментарий от aton

>Покажи весь код?

Мой код это есть исходники BigBrother (bb4.com). История такова, сначала все работало на 32-х битной машине, сейчас все изменилось и надо собирать код клиента под 64 бита (на FBSD6.0). Клиент вываливается в core, анализ которого и привел меня к gdb. Дальше ты знаешь :)

Код я не трогал, покамест разбираюсь с опциями gcc ...

CMEPTb
() автор топика
Ответ на: комментарий от Dead

>Оптимизация в gcc была включена?

да, была. но после ее отключения (я пока не понял почему !) gdb
 ЧАСТИЧНО отказывается вообще показывать номера строчек и пр. инфу в 
backtrace :). Там типа 

------------------------------------
#0  bbsend_timeout () at bbsend.c:33
#1  0x0000000000000246 in ?? ()
#2  0x0000000000000000 in ?? ()
#3  0x00007fffffffd048 in ?? ()
#4  0x00007fffffffd89d in ?? ()
#5  0x0000000000403e01 in stricmp (str1=Cannot access memory at address 0xffffffffffffe804
) at utils.c:1373
Cannot access memory at address 0xffffffffffffe81c
------------------------------------

чуствую надо напиться, а завтра сутра скачать заново исходники и 
начать с чистого листа, а то мне перестает все это нравица :))

CMEPTb
() автор топика

в gdb есть ровно одна нужная команда - info stack

Nuke
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.