Вопрос

Одним из продуктов, которые мы разрабатываем, является телефонное приложение для телефонов Nokia, выполненное на C ++ и Symbian. Некоторое время назад мы начали получать "случайные" сбои, вызванные паникой ПОЛЬЗОВАТЕЛЯ 44.

Я довольно новичок в среде symbian, поэтому я ищу инструменты и рекомендации, которые помогут найти причину этой ошибки.

Есть ли эквивалент "трассировки стека", который я могу получить?Есть ли общий код, улавливающий панику, который мог бы дать мне некоторое представление об этом?

Это было полезно?

Решение

От http://www.symbian.com/developer/techlib/v9.1docs/doc_source/reference/N10352/UserPanics.html:

This panic is raised by the Free() and FreeZ() member functions of an RHeap.
It is caused when the cell being freed overlaps the next cell on the free
list (i.e. the first cell on the free list with an address higher than the
one being freed).

Это означает, что ваш вызов delete /delete[] (который, в свою очередь, вызовет Free()/ FreeZ()) с недопустимым указателем.При отладке в Carbide отладчик должен прерваться на строке, которая вызывает панику, и вы должны увидеть недопустимое удаление.

Другие советы

Как Каспржол указал на, переход через отладчик должен позволить вам сузить круг до набора строк или подпрограммы, вызывающих панику.Вы также можете захотеть убедиться, что вы не пытаетесь удалить объект кучи, право собственности на который было передано другому объекту кучи (возможно, посредством вызова метода, который четко не документирует этот факт), который уже удалил этот объект до того, как вы удалили его явно.Последнее уже кусало меня раньше.

Мое смутное понимание заключается в том, что паника ПОЛЬЗОВАТЕЛЯ 44 и ПОЛЬЗОВАТЕЛЯ 45 связана с проблемами кучи.Наиболее распространенной проблемой было бы двойное удаление.Вы обнуляете свои указатели после их удаления?Вы проверяете значение NULL перед их удалением?Где вы могли бы что-то дважды удалять?

Вероятно, самым простым выбором для отладки является использование Carbide 2.0, поскольку он полнофункциональный и находится в свободном доступе.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top