33 votes

Pourquoi l'option Edit and Continue ne fonctionne-t-elle pas sur le CLR x64 ?

Microsoft a expliqué qu'elle ne prendrait pas en charge Edit and Continue sous le CLR x64 dans Visual Studio 2010 :

Lors de la création d'une nouvelle application Visual C# Console dans VS2010 pour .NET 4.0, les paramètres de cible par défaut pour le projet sont de cibler la plate-forme x86 au lieu de Any CPU (MSIL) comme Visual Studio 2008 le fait.

[...]

L'ajout d'une véritable prise en charge d'EnC dans le CLR 64 bits est malheureusement un travail important et d'autres fonctionnalités ont été privilégiées par rapport à cela, compte tenu de la solution de contournement consistant à changer la cible de la plate-forme en x86.

(de http://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=455103 )

La description de Microsoft Connect donne l'impression que l'édition et la poursuite en 64 bits constituent un changement architectural majeur. Ma question est la suivante : Qu'est-ce qui est différent sur x64 qui rend EnC difficile ?

Je n'ai pas réussi à trouver beaucoup de détails techniques sur le web, à part "64-bit EnC doesn't work".

20voto

MSalters Points 74024

Modifier et poursuivre exige que le compilateur corrige un exécutable en cours d'exécution. Cela se fait généralement en remplaçant toutes les fonctions altérées. Évidemment, les versions JITted de ces fonctions doivent également être éliminées et les appelants doivent être ajustés à de nouveaux emplacements.

Ce n'est pas particulièrement difficile pour x64, probablement aussi difficile que pour x86. Mais contrairement à x86, cela n'a tout simplement pas encore été fait pour x64. Et les différences entre x86 et x64 sont suffisamment grandes pour que vous ne puissiez pas simplement prendre le code EnC de x86 et changer chaque 4 dans un 8.

4voto

Eric Points 4139

Cet article de blog développe les propos de MSalters : http://blogs.msdn.com/rmbyers/archive/2009/06/08/anycpu-exes-are-usually-more-trouble-then-they-re-worth.aspx

En fait, Microsoft est plus intéressé par l'amélioration des outils de débogage x86 (par exemple Intellitrace) que par celle des outils de débogage x64. C'est assez inquiétant car il semble qu'Intellitrace devra également être porté sur x64 à un moment donné, ce qui retardera probablement davantage les améliorations du débogage x64.

0voto

oleksii Points 17099

Il semble que le nouveau cadre .NET le prenne en charge. Dans la section détails de Aperçu de .NET Framework 4.5.1

L'aperçu de .NET Framework 4.5.1 ... comprend les améliorations suivantes améliorations ... significatives :

...
64-bit Modifier et continuer
...

Cela ne fonctionne toujours pas dans Visual Studio 2012 avec .NET 4.5.1 Preview installé.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X