Pergunta

Um dos produtos que desenvolvemos é um aplicativo de telefone para telefones Nokia feito em C ++ e Symbian, começamos a receber "aleatório" trava quando um atrás, com um pânico USUÁRIO 44.

Eu sou muito novo para o ambiente Symbian, por isso estou procurando ferramentas e recomendações para ajudar a encontrar a raiz do erro.

Existe um equivalente a um "stack trace" que eu posso conseguir? Existe código de captura de pânico genérico que poderia me dar algumas dicas sobre isso?

Foi útil?

Solução

A partir 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).

Isso significa, seu chamando Apagar / Apagar [] (que por sua vez irá chamar free () / FreeZ ()) com um ponteiro inválido. Quando debuging sob Carbide o debuger deve quebrar na linha que faz com que o pânico e você deve ser capaz de ver a eliminação inválido.

Outras dicas

Como Kasprzol apontou , percorrendo o depurador deve deixá-lo a diminuir ao conjunto de linhas ou de rotina, causando o pânico. Você também pode querer garantir que você não está tentando excluir um objeto pilha cuja propriedade foi transferida para um outro objeto pilha (provavelmente através de uma chamada de método que não documentar claramente este fato) que já excluiu esse objeto antes que você está excluindo explicitamente . Eu ter sido mordido por este último antes.

Meu vaga compreensão é que o usuário 44 e USUÁRIO 45 pânicos ambos têm a ver com problemas de heap. O problema mais comum seria uma eliminação dupla. Você está NULL'ing seus ponteiros depois de excluí-los? Você está verificando contra NULL antes de excluí-los? Onde você poderia ser o dobro apagar alguma coisa?

A escolha mais fácil para depuração é provavelmente usar Carbide 2.0, como é totalmente caracterizado e livremente disponível.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top