Domanda

Uno dei prodotti che sviluppiamo è un telefono app per telefoni Nokia fatto in C ++ e Symbian, abbiamo iniziato a ricevere "random" si blocca un po 'un fa con un UTENTE 44 di panico.

Sono abbastanza nuovo per l'ambiente Symbian quindi non vedo per gli strumenti e le raccomandazioni per contribuire a trovare la radice di questo bug.

Esiste un equivalente di un "traccia dello stack" che posso ottenere? C'è generica panico codice di cattura che mi potesse dare qualche informazione in esso?

È stato utile?

Soluzione

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

Vuol dire, la vostra chiamando delete / delete [] (che a sua volta chiamare Gratis () / FreeZ ()) con un puntatore non valido. Quando debuging sotto carburo del debuger dovrebbe rompere sulla linea che causa il panico e si dovrebbe essere in grado di vedere la cancellazione valido.

Altri suggerimenti

Kasprzol sottolineato , passando attraverso il debugger dovrebbe permettere di restringere verso il basso per l'insieme di linee o di routine che causa il panico. Si consiglia inoltre di garantire che non si sta cercando di eliminare un oggetto mucchio la cui proprietà è stata trasferita ad un altro oggetto heap (probabilmente attraverso una chiamata di metodo che non documentano in modo chiaro questo fatto) che ha già cancellato quell'oggetto prima si sta eliminando in modo esplicito . Sono stato morso da quest'ultimo prima.

La mia comprensione vaga è che l'utente 44 e USER 45 panico entrambi hanno a che fare con problemi di heap. Il problema più comune sarebbe una doppia eliminazione. Stai NULL'ing i puntatori dopo l'eliminazione di loro? Stai Controllato contro NULL prima di eliminarli? Dove si potrebbe essere doppia eliminazione qualcosa?

La scelta più facile per il debug è probabilmente quello di usare carburo 2.0, in quanto è ricco di funzioni e liberamente disponibile.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top