11
votes

Y a-t-il un moyen de vider un flux du débogueur en vs

J'utilise VS 2010 et je travaille avec beaucoup de flux en C # dans mon projet actuel. J'ai écrit des utilitaires de dépôt de flux pour écrire certains types de flux à des fins de débogage, mais je semble continuer à trébucher de temps après que je débrouge et je dois regarder dans le flux que je débogage, mais je n'ai pas mis mon Dump appelle là-bas. Il semble que je puisse être capable de vider le flux d'une manière ou d'une autre à l'aide de VS ou peut-être lui dire d'appeler l'une de mes méthodes de décharge sur un flux dans le débogueur. Y a-t-il un travail à faire cela?

Les flux que je travaille avec un texte décrivant une blob de données puis des octets de la blob, donc en regardant la description. Mes méthodes de décharge vident généralement cette information, puis ignorez les blobs.


0 commentaires

4 Réponses :


4
votes

Peut-être que vous pourriez écrire un visualiseur? MSDN explique comment ici: http://msdn.microsoft.com/en-us /Library/e2zc529c.aspx


1 commentaires

Très agréable, c'est une excellente solution qui me permet de faire ma fonction de décharge faire partie du débogueur



0
votes

Vous pouvez simplement utiliser la fenêtre immédiate pour appeler votre fonction de décharge pendant le débogage:

MikeDsDumpFxn(whateverStreamIsActiveInThisContext)


0 commentaires

19
votes

Tapez ceci dans la fenêtre immédiate:

System.Diagnostics.Debug.WriteLine((new System.IO.StreamReader(stream)).ReadToEnd());


2 commentaires

Vous aurez peut-être besoin de system.diagnostics.debug.writeline ((nouveau system.io.streamreader (flux)). Readtoend ());


Notez que cela consommera de l'appel afin que vous sachiez que vous ne serez probablement pas en mesure de poursuivre la session de débogage actuelle.



0
votes

Si vous avez des données binaires dans le flux, vous pouvez essayer de le jeter dans un fichier à l'aide des lignes suivantes dans la fenêtre IMMEDIATE CODE>:

var lastPos = stream.Position;    
var ms = new MemoryStream();
stream.Seek(0, SeekOrigin.Begin)
stream.CopyTo(ms)
File.WriteAllBytes("filepath.bin", ms.ToArray())
stream.Seek(lastPos, SeekOrigin.Begin)


0 commentaires