J'ai une application Windows Mobile 4.0, écrite en utilisant EVC++ 4.0 SP4 avec MFC, qui présente un crash occasionnel aléatoire sur le terrain. par exemple. Exception ox800000002 à 00112584. Il ne se produit pas sous divers émulateurs et simulateurs, d'où il est très difficile à tracer à l'aide d'un débogueur. Le crash se lève et le type d'adresse et d'exception. Étant donné que j'ai la PDB est-il un moyen de suivre cette adresse à la source. Je ne peux pas recompiler en utilisant VC++ 8 car il ne supporte pas le SDK mobile 4. Je suppose que sans une trace de pile, je ne vais pas avoir beaucoup de joie, car les chances sont que l'exception ne soit pas dans ma source. Ça vaut le coup tout de même.Comment trouver une position de code source à partir d'une adresse donnée par un crash dans Windows CE
Modifier Comme suggéré, j'ai regardé l'adresse dans le contexte du fichier .MAP pour le programme. Cela révèle ce qui suit
Address Publics by Value Rva+Base Lib:Object
0001:00000000 [email protected]@[email protected] 00011000 f 7Par.obj
'
'
'
0001:001124b8 [email protected]@@[email protected]@[email protected]@[email protected] 0b8 f gxseldrg.obj
0001:001126d8 [email protected]@@[email protected]@[email protected] 0d8 f gxseldrg.obj
Ce qui suggère l'erreur est survenue lors CGXGridUserDragSelectRangeImp :: OnLButtonUp(), qui semble un peu bizarre que je ne pense pas qu'il y avait un bouton de la souris/clavier/écran pressé à l'époque. Peut-être que la pile s'est fragilisée avant que le crash ne soit signalé, et je perds mon temps. Je vais recompiler avec la sortie de l'assembleur pour essayer de l'isoler sur une ligne donnée, mais ne laisse pas beaucoup d'espoir :(
Est-ce que le fichier map affiche des adresses segmentées, par exemple 0001: xxxxxxxxx et le rapport d'erreur non segmenté adresses, je dois effectuer un calcul pour obtenir l'adresse de la carte de l'adresse de l'accident?