Компьютерный форум
Правила
Вернуться   Компьютерный форум > Форум программистов > Офтопик > Юмор
Перезагрузить страницу К вопросу о садизме
Ответ
 
Опции темы Опции просмотра
  (#1 (permalink)) Старый
Alexiski Alexiski вне форума
Любитель давать советы
 
Сообщений: 4,274
Сказал(а) спасибо: 27
Поблагодарили 54 раз(а) в 54 сообщениях
Регистрация: 16.10.2005
По умолчанию 30.10.2009, 01:38

http://ithappens.ru/story/1383
Ответить с цитированием
  (#2 (permalink)) Старый
Влад Влад вне форума
Специалист
 
Сообщений: 3,884
Сказал(а) спасибо: 1
Поблагодарили 25 раз(а) в 25 сообщениях
Регистрация: 27.06.2002
Адрес: Санкт-Петербург
По умолчанию 30.10.2009, 12:36

Ну, старо как мир.... :( Вот этот прием гораздо интереснее: http://www.rsdn.ru/forum/cpp/1479579.1.aspx

А вообще, ПМ того проекта, о котором идет речь, ССЗБ (не автор ли был тем самым ПМ-ом?). Всего-то надо было - посмотреть по VCS лог изменений, и потом - в чем различия. Хотя опыт мне подсказывает, что никакой VCS там и в помине не было. Так что гораздо более фатальный крэш проекта мог приключиться и по миллиону других причин, включая банальный отказ винчестера.....


The difference between theory and practice is that in theory, there is no difference between theory and practice, but in practice, there is.
Ответить с цитированием
  (#3 (permalink)) Старый
danio danio вне форума
Member
 
Сообщений: 366
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 02.01.2004
По умолчанию 30.10.2009, 15:20

А оно что - в отладчике не видно было откуда берется? Или это уже давно не тру писать с включенной символьной информацией?
Ответить с цитированием
  (#4 (permalink)) Старый
Jonano Jonano вне форума
Специалист
 
Аватар для Jonano
 
Сообщений: 3,541
Сказал(а) спасибо: 2
Поблагодарили 14 раз(а) в 14 сообщениях
Регистрация: 19.04.2005
По умолчанию 30.10.2009, 15:21

А ты попробуй сделать так и посмотришь ))
Ответить с цитированием
  (#5 (permalink)) Старый
danio danio вне форума
Member
 
Сообщений: 366
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 02.01.2004
По умолчанию 30.10.2009, 15:25

а в чем там суть (у меня нет среды С++ и ставить его не собираюсь)? Я привык видеть в других языках программирования, что если что-то бросает исключение соответсвующий код в фрейме на стеке.
Ответить с цитированием
Ads.
  (#6 (permalink)) Старый
Jonano Jonano вне форума
Специалист
 
Аватар для Jonano
 
Сообщений: 3,541
Сказал(а) спасибо: 2
Поблагодарили 14 раз(а) в 14 сообщениях
Регистрация: 19.04.2005
По умолчанию 30.10.2009, 15:42

Ну, вот и тут покажет функцию, в которой вылетело Exception, только каждый раз это будет разная функция и не понять, почему именно вылетело исключение
Ответить с цитированием
  (#7 (permalink)) Старый
danio danio вне форума
Member
 
Сообщений: 366
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 02.01.2004
По умолчанию 30.10.2009, 15:44

А вот это в теле фунции - не покажет?:
Код:
if (std::random(1000) < 2) throw std::exception(); else return
Ответить с цитированием
  (#8 (permalink)) Старый
Jonano Jonano вне форума
Специалист
 
Аватар для Jonano
 
Сообщений: 3,541
Сказал(а) спасибо: 2
Поблагодарили 14 раз(а) в 14 сообщениях
Регистрация: 19.04.2005
По умолчанию 30.10.2009, 16:04

Нет, этого в теле не будет. Ты с директивой define знаком?
Ответить с цитированием
  (#9 (permalink)) Старый
danio danio вне форума
Member
 
Сообщений: 366
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 02.01.2004
По умолчанию 30.10.2009, 16:19

Цитата:
Нет, этого в теле не будет.
Это в плюс средам С/C++ явно записать нельзя (к вопросу о СКЯП).

Код:
danil@logger1a:~$ gdb a.out
GNU gdb 6.8-debian
Copyright (C) 2008 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-linux-gnu"...
(gdb) run
Starting program: /home/danil/a.out
terminate called after throwing an instance of 'std::exception'
  what():  std::exception

Program received signal SIGABRT, Aborted.
0x00007f6b610bb015 in raise () from /lib/libc.so.6
(gdb) bt
#0  0x00007f6b610bb015 in raise () from /lib/libc.so.6
#1  0x00007f6b610bcb83 in abort () from /lib/libc.so.6
#2  0x00007f6b6195ff94 in __gnu_cxx::__verbose_terminate_handler () from /usr/lib/libstdc++.so.6
#3  0x00007f6b6195e396 in ?? () from /usr/lib/libstdc++.so.6
#4  0x00007f6b6195e3c3 in std::terminate () from /usr/lib/libstdc++.so.6
#5  0x00007f6b6195e4aa in __cxa_throw () from /usr/lib/libstdc++.so.6
#6  0x00000000004007f1 in dummy (step=1) at test.cpp:7
#7  0x000000000040081c in main (argc=1, argv=0x7fff69dc39e8, environ=0x7fff69dc39f8) at test.cpp:12
(gdb) list 0x00000000004007f1
Function "0x00000000004007f1" not defined.
(gdb) list dummy
1       #include <cstdlib>
2       #include <exception>
3
4       #define return if (RAND_MAX/2 > random())  throw std::exception(); else return
5
6       void dummy(int step) {
7               return;
8       }
9
10      int main(int argc, char *argv[], char *environ[]) {
Но даже при таком расладе, товарищ должен был заметить, что каждый раз исключение возникает на return. Байка похоже.
Цитата:
Ты с директивой define знаком?
наверно еще до того, как ты в школу пошел
Ответить с цитированием
  (#10 (permalink)) Старый
Garik Garik вне форума
Member
 
Сообщений: 6,201
Сказал(а) спасибо: 0
Поблагодарили 1 раз в 1 сообщении
Регистрация: 07.06.2002
По умолчанию 30.10.2009, 16:35

danio, привет!
В общем, замечания выше относятся к дебагеру Студии. GCC действительно по-другому формирует символьную инфу, а GDB по-другому ее отображает.
Ответить с цитированием
  (#11 (permalink)) Старый
Angel5a Angel5a вне форума
Member
 
Сообщений: 1,213
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 28.02.2005
По умолчанию 30.10.2009, 20:07

Цитата:
Но даже при таком расладе, товарищ должен был заметить, что каждый раз исключение возникает на return.
Как часто вам приходилось отлаживать чужие программы в ограниченные сроки ?
Даже определив что постоянно вылетает на return'е не сразу собразишь почему (особенно после полудня отладки).
Ответить с цитированием
  (#12 (permalink)) Старый
Alexiski Alexiski вне форума
Любитель давать советы
 
Сообщений: 4,274
Сказал(а) спасибо: 27
Поблагодарили 54 раз(а) в 54 сообщениях
Регистрация: 16.10.2005
По умолчанию 30.10.2009, 23:33

При вылете на ретурне первая мысль, что какая-то зараза испортила стек..
Ответить с цитированием
Ads
  (#13 (permalink)) Старый
Jonano Jonano вне форума
Специалист
 
Аватар для Jonano
 
Сообщений: 3,541
Сказал(а) спасибо: 2
Поблагодарили 14 раз(а) в 14 сообщениях
Регистрация: 19.04.2005
По умолчанию 31.10.2009, 13:21

Чтобы понять, что это именно на ретурне вылетает - надо пошагово дебажить, иначе ничего, кроме колл-стека не получишь. И то, шанс, что вылетит на конкретном ретурне - 0.1%. Ну и см. пост от Alexiski.
Ответить с цитированием
  (#14 (permalink)) Старый
danio danio вне форума
Member
 
Сообщений: 366
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 02.01.2004
По умолчанию 31.10.2009, 20:04

Не пойму вас, профессионалов. Либо сейчас отладчики в С/C++ какие-то левые, либо народ ими пользоваться не приучен. Чего там пошагового - запустил из под отладчика и смотришь где именно упало. В отладчике всегда (было?) видно место и конкретная инструкция которая вызывает исключение. То, что символьная привязка делается к файлу до препроцессинга, это, конечно, вилы - но как можно не поинтересоваться, как именно появляется исключение - мне непонятно. Чего за отладка такая - printf что ли вставлял?.
Ответить с цитированием
  (#15 (permalink)) Старый
Garik Garik вне форума
Member
 
Сообщений: 6,201
Сказал(а) спасибо: 0
Поблагодарили 1 раз в 1 сообщении
Регистрация: 07.06.2002
По умолчанию 02.11.2009, 11:59

Цитата:
Не пойму вас, профессионалов. Либо сейчас отладчики в С/C++ какие-то левые, либо народ ими пользоваться не приучен. Чего там пошагового - запустил из под отладчика и смотришь где именно упало. В отладчике всегда (было?) видно место и конкретная инструкция которая вызывает исключение. То, что символьная привязка делается к файлу до препроцессинга, это, конечно, вилы - но как можно не поинтересоваться, как именно появляется исключение - мне непонятно. Чего за отладка такая - printf что ли вставлял?.
danio, просто все только в теории. На практике, в программе, где десяток тредов и в каждом по мегабайту кода, есть сторонние либы, откуда еще вызываются колбэки, не очень-то походишь отладчиком. И брейк-поинт на каждую строку не поставишь...
Ответить с цитированием
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
К вопросу об оперативке Steel-Rain Память 12 23.02.2012 22:12
К вопросу о разборе (парсинге) на прологе xonix Prolog 50 13.03.2011 00:29
К вопросу о перегреве процессора и не только Atlon64 Процессоры 1 17.09.2009 19:06



Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Нardforum.ru - компьютерный форум и программирование, форум программистов