10
votes

Est-il possible de déboguer le système .NET DLL comme nonOPtimisé?

J'essaie de déboguer du code dans le cadre .NET. Malheureusement, de nombreuses variables sont optimisées. Je ne peux pas définir de manière fiable le pointeur d'instructions en raison des optimisations de flux.

est-il possible de forcer le temps d'exécution à ne pas utiliser les versions Ngen'D de la DLL système .NET, mais utilisez plutôt le MSIL, forçant l'optimisation à «OFF»?

Remarque: j'ai essayé d'utiliser le truc ini pour définir allowoptimize = false mais cela n'a fait aucune différence.


0 commentaires

3 Réponses :


1
votes

Pourquoi ne voyez-vous pas le code de .NET Framework lui-même avec réflecteur ? Le réflecteur vous permet de voir le code de n'importe quel assemblage .NET [y compris le cadre .NET elle-même!], Et même le recompiler! - Bien sûr, cela s'applique aux assemblées non obscurcies!


1 commentaires

J'entre déjà la source de Microsoft directement à l'aide de son serveur de source de référence. J'ai utilisé le réflecteur pour recompiler des assemblages simples dans le passé, mais le système DLL est souvent un mélange d'indigène et géré. Ils sont également signés qui m'empêchera probablement de remplacer leurs références internes.



9
votes

a eu la réponse de John Robbins. Fondamentalement, collez-vous sur complexe_zapdisable = 1 dans vos varions variés (enveloppez-le dans une batte pour éviter d'exécuter l'ensemble du système non optimisé) et désactivez le processus d'hébergement VS.

http://blogs.msdn.com/sburke/archive/2008/01/29/how-to-disable-optimizations-Quelle-debugging-reference-source.aspx

Une autre option est la nouvelle .NET réflecteur Pro qui vous permet de décompiler / recompiler sélectivement des assemblages non optimisés. Pas nécessaire avec la source de référence mais une bonne sauvegarde.

http://www.red-gate.com/products/reflector/ Caractéristiques_Pro.htm


1 commentaires

Savez-vous comment faire ce travail avec ASP.NET? Le processus IIS n'est pas lancé de VS, de sorte qu'il ne sera probablement pas affecté par la variable env.



12
votes

Voici une autre option (de http://martin.bz/asp-net- MVC-Source-Débogage-the-easy-Way ):

aller dans le répertoire où se trouve System.Web.MVC .dll .DLL est situé: p>

c: \ windows \ assembly \ gac_msil \ system.web.mvc \ 2.0.0.0__31bf3856ad364e35 \ p>

Créer le fichier système.web.mvc.ini p>

[.NET Framework Debugging Control]
GenerateTrackingInfo=1
AllowOptimize=0


2 commentaires

Pour appliquer cette technique à tout autre assemblage en général, localisez le dossier en attachant un débogueur et une ouverture VS: Débogage> Windows> Modules.


Le mien (Windows 10) est à C: \ Windows \ microsoft.net \ assembly \ gac_msil \ system.web.mvc \ v4.0_4.0.0.1__31bf3856 AD364E35