Page 1 of 3

Как получить больше информации при краше?

PostPosted: Wed May 13, 2009 7:30 pm
by Gloggy
Вот сейчас у меня при рескане словарей GD тихо валится, а хочется узнать где это происходит и как. Есть ли хоть какая-нибудь возможность узнать где упало и получить больше инфы о падении?

Re: Как получить больше информации при краше?

PostPosted: Wed May 13, 2009 7:44 pm
by gromescu
А под windows его нельзя из командной строки запукать? типа c://programm files/goldendict/goldendict.exe (или как там путь выглядит)

Re: Как получить больше информации при краше?

PostPosted: Wed May 13, 2009 7:50 pm
by Gloggy
gromescu wrote:А под windows его нельзя из командной строки запукать? типа c://programm files/goldendict/goldendict.exe (или как там путь выглядит)

Не, оконное приложение в Windows сразу же детачится от консоли и туда уже ничего не пишет...

Попробовал пересобрать дебажную версию, она тоже ничего не сообщает, тихо падает и все.

Re: Как получить больше информации при краше?

PostPosted: Wed May 13, 2009 7:59 pm
by ravenger
Вот у меня GD тоже валится через раз при рескане словарей, но в соседней теме мне сказали что у меня проблемы с RAM или с процем. И еще GD долго запускается, вернее сама программа мгновенно показывается, но словари подгружаются около 15 секунд

Re: Как получить больше информации при краше?

PostPosted: Wed May 13, 2009 8:06 pm
by Gloggy
ravenger wrote:Вот у меня GD тоже валится через раз при рескане словарей, но в соседней теме мне сказали что у меня проблемы с RAM или с процем

У меня все строго детерминировано, если определенные словари положить в каталог, то GD будет падать. Если их убрать, то не падает.

В общем, нужен какой-то способ получит информацию о том где упало, о стэке, ну и всякое такое! :) Тогда уже можно будет предметно говорить что где из-за чего упало...

Re: Как получить больше информации при краше?

PostPosted: Wed May 13, 2009 8:18 pm
by C2BlEv
Gloggy wrote:У меня все строго детерминировано, если определенные словари положить в каталог, то GD будет падать. Если их убрать, то не падает.


У меня на каком-то Вавилоновском словаре валилась, даже процесса не оставалось в памяти. Снес тот словарь и все нормально.

Re: Как получить больше информации при краше?

PostPosted: Wed May 13, 2009 8:23 pm
by gromescu
Вот у меня GD тоже валится через раз при рескане словарей, но в соседней теме мне сказали что у меня проблемы с RAM или с процем. И еще GD долго запускается, вернее сама программа мгновенно показывается, но словари подгружаются около 15 секунд

Наверняка глючный словарь, может проблема с кодировкой, может еще с чем-то. Если, допустим, что-то не так с кодировкой, то gd каждый раз при запуске будет его пытаться заново проиндексировать (при большом словаре и очень кривом словаре это может и несколько минут занять). Попробуй оставить 1 заведомо рабочий словарь и посмотреть, как в этом случае будет стартовать. Но в любом случае надо смотреть, что пишется в консоль, как правило там есть информация об ошибках в словарях.

Re: Как получить больше информации при краше?

PostPosted: Wed May 13, 2009 9:03 pm
by Gloggy
Вроде бы научился из-под дебага смотреть на какой-никакой вывод из GD.

В моем краше вижу следующее:
Code: Select all
dictzip.c: No such file or directory
GoldenDict (dictzip.c): Cannot map view of data file "D:\dic-cmp\UniversalDeRu.dsl"

Краш возникает когда у меня в каталоге dic-cmp есть несколько копий одного и того же словаря, под разными именами, но содержимое одно и то же.
Индексируется все нормально. Но когда нажимаю Ctrl-F5, то краш.

Re: Как получить больше информации при краше?

PostPosted: Wed May 13, 2009 9:39 pm
by ikm
Gloggy, в qt creator должен быть какой-то отладчик. Правда, как там и что, я не знаю, я под linux все отлаживаю. Как вариант, можно включить и консоль, поколдовав в .pro-файле.

upd: Посмотри, нет ли у тебя в путях такого, что один и тот же путь повторен дважды, явно или неявно (например, C:\Foo и C:\Foo\Bar, оба рекурсивно и одновременно).

Re: Как получить больше информации при краше?

PostPosted: Wed May 13, 2009 9:47 pm
by ikm
ravenger wrote:И еще GD долго запускается, вернее сама программа мгновенно показывается, но словари подгружаются около 15 секунд

Программа будет очень долго стартовать, если в путях есть папки со словарями, у которых куча незапакованных ресурсов. Если такой путь указан рекурсивно, ей придется пробежаться по всем этим тысячам файлов, когда она ищет все словари. Проблема решается либо перемещением всех ресурсов в подпапку foo.dsl.files, где foo.dsl - это имя файла словаря -- и при этом надо использовать нерекурсивный путь, или же упаковской всех ресурсов в zip-файл (что гораздо лучше по всем параметрам).