2009-09-16 6 views
0

Mon système d'exploitation est 64 bits Server 2008, 64 bits SharePoint2007 SP2, Visual Studio 2008 SP1. J'écris une partie web et la déploie sur le serveur, ça marche bien, mais je veux quand même la déboguer. Je trouve l'ID de processus de w3wp.exe (port 80), puis je l'attache au Visual Studio comme je le fais sur le serveur 2003, mais il semble ne pas fonctionner. Mais je fais quelques points d'arrêt à l'événement bouton de cette partie Web, après que je l'attache au VS et clique sur le bouton, il ne pouvait pas s'arrêter au point d'arrêt. Est-ce que quelqu'un rencontre ce problème avant.Impossible de déboguer le SharePoint

Cordialement,

Répondre

2

Quelques suggestions:

  1. Assurez-vous d'avoir recyclé le pool d'applications avant de fixer au processus w3wp.
  2. Construit en mode débogage, assurez-vous que les fichiers .pdb sont générés.
  3. Attachez au bon processus w3wp. Si vous ne savez pas, vous pouvez (mais pas recommandé) joindre à tous w3wp. Habituellement, il s'agirait de celui utilisé par le compte du pool d'applications.
0

Et assurez-vous que si vos dll sont dans le GAC, les années sont là des pdb trop (copie pdb à c: \ windows \ assenbly \ GAC \ GAC_MSIL \ AssemblyName \ AssemblyVersion). Quand je déploie une solution à partir de Visual Studio à l'aide d'un script, Visaul Studio sait quelle DLL utiliser, si je crée une solution et que j'utilise la ligne de commande de l'invite, elle ne trouvera pas les pdb.

+0

Vous n'avez pas besoin de copier les fichiers PDB dans GAC. Il est assez simple de les laisser à l'emplacement cible de la construction car le studio visuel cherchera également cet endroit pour PDB. J'ai plus de problèmes à copier les PDB à GAC que de les laisser là où ils sont. S'il vous plaît lire ceci - http://www.elumenotion.com/Blog/Lists/Posts/Post.aspx?ID=23 –

+0

Cela échoue en quelque sorte une partie du temps pour moi. Comme je l'ai dit, juste après une construction, ça va aller, mais fermer le studio visuel, ou se connecter/se déconnecter et ça ne marchera plus ... Peut-être juste moi si ... – Colin

1

Pour développer sur Brian's premier point concernant le recyclage du pool d'applications: Le processus w3wp.exe pour ce pool ne redémarrera pas jusqu'à la première demande au site. Si vous vous attachez avant cela, vous vous joindrez au mauvais processus (ou il n'y aura pas du tout de processus w3wp.exe). Le cycle est alors recycler, rafraîchir, attacher.

Voici quelques façons de rendre cela plus facile (malheureusement pas de solution fait tout):

  1. Utilisez Application Pool Manager par Spence Harbar. Cela met une petite application dans votre barre d'état système Windows qui va recycler le pool d'applications et le réchauffer à nouveau (ce qui signifie que vous n'avez pas besoin d'actualiser la page). Vous devez toujours attacher le débogueur. Utilisez WSPBuilder et ses extensions Visual Studio intégrées. Cela copie vos fichiers dans le GAC et recycle automatiquement tous les pools d'applications pour vous. Vous devez toujours actualiser la page et attacher un débogueur.

  2. Utilisez le Debugger Feature for SharePoint. Cela ajoute une entrée au menu Actions du site qui attache le débogueur. Il se connectera au bon processus w3wp.exe et vous évitera de faire l'actualisation de la page (comme cela se produit dans le cadre de l'utilisation du menu des actions du site). Vous devrez tout d'abord recycler le pool d'applications dans un premier temps. Notez également que ceci n'est utile que pour les exceptions non gérées - il n'interagit pas avec Visual Studio et ne sera donc pas utile dans le scénario du point d'arrêt.

1

Une autre suggestion - après avoir fixé au processus W3WP (sauf si vous déboguer de travail minuterie - puis attacher à Owstimer.exe) appuyez sur CTRL + ALT + U pour voir les modules chargés et PDB lui correspondant.Cliquez avec le bouton droit sur votre DLL et affichez les informations sur le chargement des symboles - si les PDB ne correspondent pas ou quelque chose, supprimez simplement tous les PDB des emplacements que vous voyez dans cette fenêtre, reconstruisez le projet et réessayez. Oui, et vous devriez lire this.

Questions connexes