2010-11-10 29 views
2

Je souhaite afficher la pile d'appels lorsqu'une exception de stackoverflow est levée. (c'est-à-dire que je veux indiquer quel appel récursif provoque le débordement de la pile). La pile d'appels est effacée et tout ce que je peux voir est "code externe". Edit J'ai suivi le conseil de Chris Schmich (poste ci-dessous), maintenant j'ai une pile d'appels comme ci-dessous, c'est juste une application de console que j'écris, notez que la mention Main() dans l'écran n'est pas mentionnée tir:Affichage de CallStack dans Visual Studio 2010 lorsque l'exception de flux de pile retournée est levée

alt text

Edit2: Je suivais Chris conseils de Schmich au sujet vue les différents threads appellent des piles, mais je semble ne peux toujours pas voir la pile d'appels de mon application console, voici ce que je peux voir:

alt text

Quelqu'un a-t-il des idées?

Répondre

4

Le cadre [External Code] que vous voyez est dû à la fonction Just My Code du débogueur. Le débogueur cache les cadres de la pile parce qu'ils ne sont pas dans votre code. Certains détails sur JMC peuvent être trouvés dans this blog post.

Vous pouvez désactiver simplement Mon code en procédant comme suit:

  • Debug »Options et paramètres ...» décocher la case "Activer Just My code (Managed uniquement)" »cliquez sur OK

Vous devriez maintenant être capable de voir tous les cadres de la pile.

Pour un exemple de JMC, quand je fais un pas dans une application simple console C# avec JMC a permis, je ne vois que le code dans ma solution ...

alt text

... et avec JMC handicapés , je vois le code-cadre et ...

alt text

+0

Merci pour cela, mais après avoir suivi ces étapes, je peux maintenant voir que je peux 5 appels dans ma pile lorsque l'exception est levée. Pas d'entre eux sont de mon code. Au sommet de la pile est ..... RunUserAssembly() et en bas est [Native to Managed Transition]. Avez-vous une idée de ce que je peux faire d'ici pour voir la partie de la pile d'appels qui m'intéresse? – bplus

+0

Merci d'avoir pris le temps de prendre des captures d'écran- j'ai édité mon post original et ajouté une capture d'écran ... – bplus

+0

@bplus: cette capture d'écran est d'un fil différent, ce qui explique pourquoi vous ne voyez pas votre 'Main' . Le débordement de pile se produit probablement sur un autre thread. Ouvrez la fenêtre des discussions (Debug »Windows» Threads) pour afficher et changer le thread actif. La pile d'appels sera mise à jour lorsque vous changez de threads. –

0

Vérifiez ce, Symboles Chargement paragraphe Loading Symbols Ils sont les fichiers * pdb, et yo Vous devez les télécharger à partir de Microsoft afin que vous puissiez voir le code externe.