Отладочные символы
От: samodelkin Россия  
Дата: 14.01.10 18:15
Оценка:
Добрый день, интересует возможность получит вместе с HtmLayout.dll еще и отладочные символы в виде HtmLayout.pdb. Возможно ли это ?
Re: Отладочные символы
От: c-smile Канада http://terrainformatica.com
Дата: 15.01.10 20:34
Оценка:
Здравствуйте, samodelkin, Вы писали:

S>Добрый день, интересует возможность получит вместе с HtmLayout.dll еще и отладочные символы в виде HtmLayout.pdb. Возможно ли это ?


Я строю отдельный билд (т.н. retail SDK version) для зарегистрированных юзеров, он содержит pdb.
Re[2]: Отладочные символы
От: samodelkin Россия  
Дата: 16.01.10 18:54
Оценка:
Здравствуйте, c-smile, Вы писали:

CS>Я строю отдельный билд (т.н. retail SDK version) для зарегистрированных юзеров, он содержит pdb.


Тогда как можно зарегистрироваться ? Дело в том, что я пытаюсь разобрать случаи утечек памяти в приложении, которые ведут в htmlayout.dll, соответственно без отладочных символов мне не разобраться.
Re[3]: Отладочные символы
От: c-smile Канада http://terrainformatica.com
Дата: 17.01.10 00:50
Оценка:
Здравствуйте, samodelkin, Вы писали:

S>Здравствуйте, c-smile, Вы писали:


CS>>Я строю отдельный билд (т.н. retail SDK version) для зарегистрированных юзеров, он содержит pdb.


S>Тогда как можно зарегистрироваться ? Дело в том, что я пытаюсь разобрать случаи утечек памяти в приложении, которые ведут в htmlayout.dll, соответственно без отладочных символов мне не разобраться.


А каким образом наличие PDB поможет "разобрать случаи утечек памяти"?

Рекомендую пользовать dom::element как smart pointer для HELEMENT. Зело помогает.
Re[4]: Отладочные символы
От: samodelkin Россия  
Дата: 25.01.10 16:40
Оценка:
Здравствуйте, c-smile, Вы писали:

CS>А каким образом наличие PDB поможет "разобрать случаи утечек памяти"?


В таком случае я увижу, какие места привели к утечкам и возможно пойму, как этого избежать. Пока же я просто вижу, что они есть и call-stack примерно следующией:
htmlayout+0x4fd08
Смещение 0x4fd08 мне ни о чем не говорит.

CS>Рекомендую пользовать dom::element как smart pointer для HELEMENT. Зело помогает.
Re[5]: Отладочные символы
От: c-smile Канада http://terrainformatica.com
Дата: 26.01.10 05:18
Оценка:
Здравствуйте, samodelkin, Вы писали:

S>Здравствуйте, c-smile, Вы писали:


CS>>А каким образом наличие PDB поможет "разобрать случаи утечек памяти"?


S>В таком случае я увижу, какие места привели к утечкам и возможно пойму, как этого избежать. Пока же я просто вижу, что они есть и call-stack примерно следующией:

S>htmlayout+0x4fd08
S>Смещение 0x4fd08 мне ни о чем не говорит.

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

Есть такая штука class htmlayout::dom::expando .
С её помощью можно отследить висящие DOM элементы.
Алгоритм примерно следующий:

1) момент X проходим по всем элементам и назначаем на каждый свое expando.
При этом добавляем эти expando в map<HELEMENT,expando*>.
2) Закрываем окно или грузим другой документ. В процессе выгрузки будет вызван
expando::finalize() для всех элементов с expando.
По finalize() удаляем DOM элемент из map<HELEMENT,expando*>.

По завершению данной операции в map<> останутся зависшие элементы.
В большинстве случаев достаточно просто вывести их tag name чтобы понять где оно и что оно.
Re[6]: Отладочные символы
От: alsemm Россия  
Дата: 26.01.10 07:10
Оценка:
Здравствуйте, c-smile, Вы писали:

CS>Здравствуйте, samodelkin, Вы писали:


S>>Здравствуйте, c-smile, Вы писали:


CS>>>А каким образом наличие PDB поможет "разобрать случаи утечек памяти"?


S>>В таком случае я увижу, какие места привели к утечкам и возможно пойму, как этого избежать. Пока же я просто вижу, что они есть и call-stack примерно следующией:

S>>htmlayout+0x4fd08
S>>Смещение 0x4fd08 мне ни о чем не говорит.

CS>Я сильно подозреваю что и имя моей функции тебе ничего не скажет.


CS>Есть такая штука class htmlayout::dom::expando .

CS>С её помощью можно отследить висящие DOM элементы.
CS>Алгоритм примерно следующий:

CS>1) момент X проходим по всем элементам и назначаем на каждый свое expando.

А что делать с элементами у которых уже есть expando?
Re[7]: Отладочные символы
От: c-smile Канада http://terrainformatica.com
Дата: 26.01.10 07:32
Оценка:
Здравствуйте, alsemm, Вы писали:

CS>>1) момент X проходим по всем элементам и назначаем на каждый свое expando.

A>А что делать с элементами у которых уже есть expando?

Ну значит они уже сидят в той map<>.
Re[6]: Отладочные символы
От: samodelkin Россия  
Дата: 26.01.10 07:38
Оценка:
Здравствуйте, c-smile, Вы писали:

CS>Я сильно подозреваю что и имя моей функции тебе ничего не скажет.


CS>Есть такая штука class htmlayout::dom::expando .

CS>С её помощью можно отследить висящие DOM элементы.
CS>Алгоритм примерно следующий:

CS>1) момент X проходим по всем элементам и назначаем на каждый свое expando.

CS>При этом добавляем эти expando в map<HELEMENT,expando*>.
CS>2) Закрываем окно или грузим другой документ. В процессе выгрузки будет вызван
CS>expando::finalize() для всех элементов с expando.
CS>По finalize() удаляем DOM элемент из map<HELEMENT,expando*>.

CS>По завершению данной операции в map<> останутся зависшие элементы.

CS>В большинстве случаев достаточно просто вывести их tag name чтобы понять где оно и что оно.

Я на самом деле вызываю функцию, наподобие этой:

const char* pdoc = "<html><frame src='http://terrainformatica.com/' /></html>";
HTMLite::load(LPCBYTE(pdoc),strlen(pdoc));

со своим собственно подготовленным html.
Поэтому даже не представляю, что мне потом делать с dom-элементами. Предполагаю, что не освобождается image, локальный путь на который указан в моем html.

А что мне делать с неосвобожденными dom-элементами после того, как я пойму, что они например не выгружаются ? Есть ли специальные функции для их выгрузки ?
Re[7]: Отладочные символы
От: c-smile Канада http://terrainformatica.com
Дата: 26.01.10 07:53
Оценка:
Здравствуйте, samodelkin, Вы писали:

S>Здравствуйте, c-smile, Вы писали:


CS>>Я сильно подозреваю что и имя моей функции тебе ничего не скажет.


CS>>Есть такая штука class htmlayout::dom::expando .

CS>>С её помощью можно отследить висящие DOM элементы.
CS>>Алгоритм примерно следующий:

CS>>1) момент X проходим по всем элементам и назначаем на каждый свое expando.

CS>>При этом добавляем эти expando в map<HELEMENT,expando*>.
CS>>2) Закрываем окно или грузим другой документ. В процессе выгрузки будет вызван
CS>>expando::finalize() для всех элементов с expando.
CS>>По finalize() удаляем DOM элемент из map<HELEMENT,expando*>.

CS>>По завершению данной операции в map<> останутся зависшие элементы.

CS>>В большинстве случаев достаточно просто вывести их tag name чтобы понять где оно и что оно.

S>Я на самом деле вызываю функцию, наподобие этой:


S>
S>const char* pdoc = "<html><frame src='http://terrainformatica.com/' /></html>";
S>HTMLite::load(LPCBYTE(pdoc),strlen(pdoc));
S>

S>со своим собственно подготовленным html.
S>Поэтому даже не представляю, что мне потом делать с dom-элементами. Предполагаю, что не освобождается image, локальный путь на который указан в моем html.

Все images гарантированно освобождаются при загрузке нового документа во view.
Фактически коллекция images есть member variable в root node. Т.е. если никто root node не держит то и images удаляются.

S>А что мне делать с неосвобожденными dom-элементами после того, как я пойму, что они например не выгружаются ? Есть ли специальные функции для их выгрузки ?


Неосвобожденные DOM элементы означают что у тебя больше вызовов HTMLayout_UseElement() чем HTMLayout_UnUseElement()
что есть add_ref/release пара. И это само собой надо фиксить.
Re[8]: Отладочные символы
От: alsemm Россия  
Дата: 26.01.10 14:50
Оценка:
Здравствуйте, c-smile, Вы писали:

CS>Здравствуйте, alsemm, Вы писали:


CS>>>1) момент X проходим по всем элементам и назначаем на каждый свое expando.

A>>А что делать с элементами у которых уже есть expando?

CS>Ну значит они уже сидят в той map<>.

Нет не седят — это чужие expando, не мои. Например когда у меня на старнице несколько native behavior-ов от разных "поставщиков".
Re[8]: Отладочные символы
От: samodelkin Россия  
Дата: 26.01.10 17:36
Оценка:
Здравствуйте, c-smile, Вы писали:

CS>Неосвобожденные DOM элементы означают что у тебя больше вызовов HTMLayout_UseElement() чем HTMLayout_UnUseElement()

CS>что есть add_ref/release пара. И это само собой надо фиксить.

Спасибо за совет, буду пробовать.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.