J'essaie d'enquêter sur un bogue dans un crash dump (afin de ne pas modifier le code). J'ai un objet très compliqué (des milliers de lignes dans la représentation sérialisée) et son état est incohérent. Pour étudier son état, la vue du débogueur de Visual Studio est inutile. Mais l'objet a un contrat de données. J'aimerais le sérialiser et ensuite utiliser mon éditeur de texte préféré pour naviguer dans l'objet. Est-il possible de le faire à partir du débogueur ?
Réponses
Trop de publicités?Il y a quelque temps, j'ai écrit cette ligne unique pour sérialiser un objet vers un fichier sur le disque. Copiez/collez-la dans votre fenêtre Immédiate, et remplacez obj
(il est référencé deux fois) avec votre objet. Il va enregistrer un text.xml
pour c:\temp
modifiez-la à votre convenance.
(new System.Xml.Serialization.XmlSerializer(obj.GetType())).Serialize(new System.IO.StreamWriter(@"c:\temp\text.xml"), obj)
Ne vous attendez pas à de la magie cependant, si l'objet ne peut pas être sérialisé, une exception sera levée.
Voici une extension de Visual Studio qui vous permettra de faire exactement cela :
https://visualstudiogallery.msdn.microsoft.com/c6a21c68-f815-4895-999f-cd0885d8774f
Vous pouvez produire des résultats en JSON, XML ou C#.
Utilisez ceci dans la fenêtre "Immédiate" de Visual Studio, en remplaçant c:\directory\file.json
avec le chemin complet du fichier dans lequel vous souhaitez écrire le JSON et myObject
avec votre variable à sérialiser :
System.IO.File.WriteAllText(@"c:\directory\file.json", Newtonsoft.Json.JsonConvert.SerializeObject(myObject))
- Réponses précédentes
- Plus de réponses