40 votes

Comment déboguer une requête LinqPad dans Visual Studio Debugger ?

J'arrive à attacher le débogueur et à le faire fonctionner, mais il a du mal à trouver le fichier .cs, je pense que LinqPad le supprime dans le cadre de sa construction. 8-(

1 votes

Notez qu'après que cette question ait été posée, Linqpad a introduit une nouvelle édition premium de Linqpad qui inclut son propre débogueur.

48voto

Joe Albahari Points 13644

Si vous appelez

Debugger.Launch();
Debugger.Break(); 

pour initier le point d'arrêt dans votre script LINQPad va deviner que vous voulez utiliser VS pour déboguer votre script et ne supprimera pas le fichier .cs.

1 votes

Je viens d'avoir une autre chance avec un programme C# comme celui-ci 'code'void Main() { Debugger.Launch() ; int i = 0 ; Debugger.Break() ; i.Dump() ; }'code' VS lance ne trouve pas le code. MAIS en le relançant à partir de LP, VS trouve alors le fichier .cs.....

0 votes

J'avais des problèmes avec cela, puis j'ai réalisé que j'essayais d'attacher un débogueur VS 2008 à LINQPad.exe ; il a doit être une version de VS qui prend en charge .NET 4+ (comme VS 2012).

25voto

jornhd Points 214
  • Démarrer LINQPad
  • Dans VS, ouvrez Debug -> Attach to Process...
  • Choisissez LINQPad.exe
  • Définissez un point d'arrêt dans votre code appelé par le code LINQPad C#, ou écrivez Debugger.Break() dans votre LINQPad script à l'endroit où vous voulez que le débogueur s'arrête.
  • Exécutez le script depuis LINQPad et observez la magie.

3 votes

Vous devez vérifier la propriété Debugger.IsAttached avant d'appeler Debugger.Break().

3voto

Chris Points 3508

Si votre code LINQPad appelle une méthode dans un assemblage C# référencé et que vous voulez déboguer cet assemblage dans Visual Studio 2015, cela a fonctionné pour moi :

  1. Construisez votre solution.
  2. En option, exécutez votre LINQPad script, laissez-le se planter, etc. Dans la barre d'état LINQPad en bas à droite, remarquez le PID en coloration bleu clair.
  3. Dans VS, CTRL + ALT + P pour attacher au processus. Attachez le processus LINQPad UserQuery avec le PID que vous avez vu.
  4. Placez un point d'arrêt ici dans VS.
  5. Lancez la requête sur linqpad et allez sur VS. Vous devriez atteindre votre point d'arrêt !

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