OVH Cloud OVH Cloud

N° ligne

16 réponses
Avatar
Annie L.
Comment faire pour connaître le n° ligne dans une erreur en mode "Debug"

Pour le message = objException.message (Dim objException As Exception)

En VB 2003, nous avions cette information, mais je ne le trouve pas en VB
2005!

Merci de vos réponses!

6 réponses

1 2
Avatar
Patrice
En mode DEBUG ca marche, c'est une appli Windows ou ASP.NET...

--
Patrice

"Annie L." a écrit dans le message de
news:
Ce que j'aimerais avant tout, pouvoir afficher le n° ligne en mode Debug
!!!

Dim st As StackTrace
>> >> >> st = New StackTrace(objException, True)
>> >> >>
>> >> >> Dim sf As StackFrame
>> >> >> sf = st.GetFrame(0)
>> >> >> sf.GetFileLineNumber()
>> >> >>Msgbox(sf.GetFileLineNumber()) résultat = 0 qui devrait
>> >> >>être
>> >> >>1826



Quelle erreur est-ce que je fais ????

Merci!


"Patrice" wrote:

Bonjour, je dirais :

- soit tester dans la version de débogage sur le poste de développement

- j'avais jeté un oeil à ce point et j'avais vu aussi que les lignes
n'étaient pas forcément fiables (le PDB ne fournira pas forcément la
ligne
exacte selon les optimisations faites par le compilateur dans le code en
mode release).

Au final je n'avais pas creusé plus avant, mon expérience étant que le
message et la pile des appels est généralement suffisante pour localiser
le
problème suffisamment facilement. Eviter les routines trop longues peut
également aider (et est sans doute généralement une bonne pratique).

--
Patrice

"Annie L." a écrit dans le message de
news:
> Vous dites : Vous devez choisir dans "Générer les infos de débogage" :
> "pdb-only".
> présentement, le choix dans cette liste est "Full" est-ce correct ou
> dois-je
> choisir "pdb-only". ?
> Vous dites aussi : dans le répertoire "Debug" est-ce là :
> Dans mes options de mon projet, option "Compiler", "Chemin de sortie de
> la
> génération = binx86Debug si oui, dans ce répertoire j'ai un
> fichier
> nommé <nomDeMonProjet>.pdb (pour avoir le n° ligne lors d'une
> erreur)
> car
> cela ne fonctionne pas du tout, il me donne toujours la ligne zéro (0).
>
> Autre chose, vous dites : Pensez dans ce cas à ne pas afficher de
> message
> d'exception à l'écran... Que voulez-vous dire par là ? exemple...!
> J'ai une gestion d'erreur qui affiche le nom de mon formulaire, le nom
> de
> la
> procédure/fonction le n° de ligne et le message d'erreur générer par
> "Exception"
>
> je commence plus à comprendre, cela va être plus simple que je le
> pensais!
>
> Merci!
>
>
> "Gilles TOURREAU [MVP]" wrote:
>
>> "Annie L." a écrit dans le message
>> de
>> news:
>> > Là vous me perdez!
>> > Où vérifier ces fichiers?
>> > Un gros manque de connaissance de ma part !!!!
>> > Veuillez m'excusez!
>> > Expliquez-moi S.V.P.
>> >
>> > Merci!
>> >
>> > "Gilles TOURREAU [MVP]" wrote:
>> >
>> >> "Annie L." a écrit dans le
>> >> message
>> >> de
>> >> news:
>> >> > Il y a quelquechose que je ne comprends pas!
>> >> > J'ai mis ce code dans un "Catch objException As Exception" et il
>> >> > me
>> >> > donne
>> >> > comme erreur la ligne 0 !!!
>> >> > Ai-je oublié quelquechose ????
>> >> >
>> >> >>Dim st As StackTrace
>> >> >> st = New StackTrace(objException, True)
>> >> >>
>> >> >> Dim sf As StackFrame
>> >> >> sf = st.GetFrame(0)
>> >> >> sf.GetFileLineNumber()
>> >> >>Msgbox(sf.GetFileLineNumber()) résultat = 0 qui devrait
>> >> >>être
>> >> >>1826
>> >> >
>> >> > Merci!
>> >> >
>> >> > "Gilles TOURREAU [MVP]" wrote:
>> >> >
>> >> >> "Annie L." a écrit dans le
>> >> >> message
>> >> >> de
>> >> >> news:
>> >> >> > Bonjour!
>> >> >> > Pas évident! C'était beaucoup plus simple en VB 2003!
>> >> >> >
>> >> >> > Il me donne une erreur dans "InstanceException" :
>> >> >> > st = new StackTrace(InstanceException, true);
>> >> >> >
>> >> >> > Vous avez écrit ce code en C# ?
>> >> >> >
>> >> >> > Vous dites : NB : Il faut que les .pdb soient livrés avec
>> >> >> > votre
>> >> >> > exécutable...
>> >> >> >
>> >> >> > Qu'est ce qu'un ".pdb"? À quoi sert cette extension?
>> >> >> > Est-ce que nous pourrons avoir la ligne de l'erreur lorsque
>> >> >> > j'aurai
>> >> >> > créé
>> >> >> > un
>> >> >> > exécutable en mode "Release" ???
>> >> >> > Ce qui n'était pas possible avant! Mais cela serait vraiment
>> >> >> > super
>> >> >> > !!!
>> >> >> >
>> >> >> > Merci de votre aide!
>> >> >> >
>> >> >> >
>> >> >> >
>> >> >> > "Gilles TOURREAU [MVP]" wrote:
>> >> >> >
>> >> >> >> "Annie L." a écrit dans le
>> >> >> >> message
>> >> >> >> de
>> >> >> >> news:
>> >> >> >> > Comment faire pour connaître le n° ligne dans une erreur en
>> >> >> >> > mode
>> >> >> >> > "Debug"
>> >> >> >> >
>> >> >> >> > Pour le message = objException.message (Dim
>> >> >> >> > objException
>> >> >> >> > As
>> >> >> >> > Exception)
>> >> >> >> >
>> >> >> >> > En VB 2003, nous avions cette information, mais je ne le
>> >> >> >> > trouve
>> >> >> >> > pas
>> >> >> >> > en
>> >> >> >> > VB
>> >> >> >> > 2005!
>> >> >> >> >
>> >> >> >> > Merci de vos réponses!
>> >> >> >>
>> >> >> >>
>> >> >> >> Bonjour,
>> >> >> >>
>> >> >> >> StackTrace st;
>> >> >> >> st = new StackTrace(InstanceException, true);
>> >> >> >>
>> >> >> >> StackFrame sf;
>> >> >> >> sf = st.GetFrame(0);
>> >> >> >> sf.GetFileLineNumber();
>> >> >> >>
>> >> >> >> NB : Il faut que les .pdb soient livrés avec votre
>> >> >> >> exécutable...
>> >> >> >>
>> >> >> >> Cordialement
>> >> >> >>
>> >> >> >> --
>> >> >> >> Gilles TOURREAU - MVP C#
>> >> >> >>
>> >> >> >>
>> >> >> >> S.A.R.L. P.O.S
>> >> >> >> Le spécialiste en motoculture depuis + de 30 ans !
>> >> >> >> http://www.pos.fr
>> >> >> >>
>> >> >> >>
>> >> >>
>> >> >>
>> >> >> Oups autant pour moi !
>> >> >>
>> >> >> InstanceException est l'instance de l'exception que vous
>> >> >> récupérez
>> >> >> dans
>> >> >> le
>> >> >> bloc Catch.
>> >> >>
>> >> >> Dim st As StackTrace
>> >> >> st = New StackTrace(InstanceException, True)
>> >> >>
>> >> >> Dim sf As StackFrame
>> >> >> sf = st.GetFrame(0)
>> >> >> sf.GetFileLineNumber()
>> >> >>
>> >> >> Le .pdb est un fichier qui permet d'associer un n° de ligne de
>> >> >> votre
>> >> >> code
>> >> >> VB
>> >> >> au n° de ligne de code MSIL généré dans votre exécutable... Ce
>> >> >> fichier
>> >> >> est
>> >> >> indispensable par exemple, pour le débogage (le débogueur doit
>> >> >> savoir
>> >> >> durant
>> >> >> l'exécution de votre application à quelle ligne de code VB il se
>> >> >> trouve,
>> >> >> et
>> >> >> inversement).
>> >> >> Il est tout à fait possible de livrer les .pdb en Release, allez
>> >> >> dans
>> >> >> les
>> >> >> options de votre projet / Onglet Compiler / "Options avancées de
>> >> >> compil...".
>> >> >> Vous devez choisir dans "Générer les infos de débogage" :
>> >> >> "pdb-only".
>> >> >>
>> >> >> Faites cependant attention, les n° de lignes des exceptions
>> >> >> offrent
>> >> >> pour
>> >> >> les
>> >> >> applications "très publiques" (Site Web par exemple), une aide
>> >> >> très
>> >> >> précieuse pour les utilisateurs qui souhaiteraient trouver une
>> >> >> faille
>> >> >> dans
>> >> >> votre application... Pensez dans ce cas à ne pas afficher de
>> >> >> message
>> >> >> d'exception à l'écran...
>> >> >>
>> >> >> Cordialement
>> >> >>
>> >> >> --
>> >> >> Gilles TOURREAU - MVP C#
>> >> >>
>> >> >>
>> >> >> S.A.R.L. P.O.S
>> >> >> Le spécialiste en motoculture depuis + de 30 ans !
>> >> >> http://www.pos.fr
>> >> >>
>> >> >>
>> >>
>> >>
>> >> Tous les .pdb de chaque Assembly sont bien présents dans le
>> >> répertoire
>> >> Debug
>> >> ?
>> >>
>> >> Cordialement
>> >>
>> >> --
>> >> Gilles TOURREAU - MVP C#
>> >>
>> >>
>> >> S.A.R.L. P.O.S
>> >> Le spécialiste en motoculture depuis + de 30 ans !
>> >> http://www.pos.fr
>> >>
>> >>
>> >>
>>
>>
>> Bonjour,
>>
>> Les .pdb doivent être présent dans le même répertoire que
>> l'exécutable.
>> Il
>> doit en avoir 1 par assembly.
>> Vérifiez cette option dans vos projets :
>>
>> >> >> Il est tout à fait possible de livrer les .pdb en Release, allez
>> >> >> dans
>> >> >> les
>> >> >> options de votre projet / Onglet Compiler / "Options avancées de
>> >> >> compil...".
>> >> >> Vous devez choisir dans "Générer les infos de débogage" :
>> >> >> "pdb-only".
>>
>> Cordialement
>>
>> --
>> Gilles TOURREAU - MVP C#
>>
>>
>> S.A.R.L. P.O.S
>> Le spécialiste en motoculture depuis + de 30 ans !
>> http://www.pos.fr
>>
>>







Avatar
Annie L.
Une application Windows très simple (pas de DLL externe, ni de classes
externes, ni de UserControl) vraiment très simple!

Mais quel est mon problème ???

Merci!

"Patrice" wrote:

En mode DEBUG ca marche, c'est une appli Windows ou ASP.NET...

--
Patrice

"Annie L." a écrit dans le message de
news:
> Ce que j'aimerais avant tout, pouvoir afficher le n° ligne en mode Debug
> !!!
>
> Dim st As StackTrace
>> >> >> >> st = New StackTrace(objException, True)
>> >> >> >>
>> >> >> >> Dim sf As StackFrame
>> >> >> >> sf = st.GetFrame(0)
>> >> >> >> sf.GetFileLineNumber()
>> >> >> >>Msgbox(sf.GetFileLineNumber()) résultat = 0 qui devrait
>> >> >> >>être
>> >> >> >>1826
>
> Quelle erreur est-ce que je fais ????
>
> Merci!
>
>
> "Patrice" wrote:
>
>> Bonjour, je dirais :
>>
>> - soit tester dans la version de débogage sur le poste de développement
>>
>> - j'avais jeté un oeil à ce point et j'avais vu aussi que les lignes
>> n'étaient pas forcément fiables (le PDB ne fournira pas forcément la
>> ligne
>> exacte selon les optimisations faites par le compilateur dans le code en
>> mode release).
>>
>> Au final je n'avais pas creusé plus avant, mon expérience étant que le
>> message et la pile des appels est généralement suffisante pour localiser
>> le
>> problème suffisamment facilement. Eviter les routines trop longues peut
>> également aider (et est sans doute généralement une bonne pratique).
>>
>> --
>> Patrice
>>
>> "Annie L." a écrit dans le message de
>> news:
>> > Vous dites : Vous devez choisir dans "Générer les infos de débogage" :
>> > "pdb-only".
>> > présentement, le choix dans cette liste est "Full" est-ce correct ou
>> > dois-je
>> > choisir "pdb-only". ?
>> > Vous dites aussi : dans le répertoire "Debug" est-ce là :
>> > Dans mes options de mon projet, option "Compiler", "Chemin de sortie de
>> > la
>> > génération = binx86Debug si oui, dans ce répertoire j'ai un
>> > fichier
>> > nommé <nomDeMonProjet>.pdb (pour avoir le n° ligne lors d'une
>> > erreur)
>> > car
>> > cela ne fonctionne pas du tout, il me donne toujours la ligne zéro (0).
>> >
>> > Autre chose, vous dites : Pensez dans ce cas à ne pas afficher de
>> > message
>> > d'exception à l'écran... Que voulez-vous dire par là ? exemple...!
>> > J'ai une gestion d'erreur qui affiche le nom de mon formulaire, le nom
>> > de
>> > la
>> > procédure/fonction le n° de ligne et le message d'erreur générer par
>> > "Exception"
>> >
>> > je commence plus à comprendre, cela va être plus simple que je le
>> > pensais!
>> >
>> > Merci!
>> >
>> >
>> > "Gilles TOURREAU [MVP]" wrote:
>> >
>> >> "Annie L." a écrit dans le message
>> >> de
>> >> news:
>> >> > Là vous me perdez!
>> >> > Où vérifier ces fichiers?
>> >> > Un gros manque de connaissance de ma part !!!!
>> >> > Veuillez m'excusez!
>> >> > Expliquez-moi S.V.P.
>> >> >
>> >> > Merci!
>> >> >
>> >> > "Gilles TOURREAU [MVP]" wrote:
>> >> >
>> >> >> "Annie L." a écrit dans le
>> >> >> message
>> >> >> de
>> >> >> news:
>> >> >> > Il y a quelquechose que je ne comprends pas!
>> >> >> > J'ai mis ce code dans un "Catch objException As Exception" et il
>> >> >> > me
>> >> >> > donne
>> >> >> > comme erreur la ligne 0 !!!
>> >> >> > Ai-je oublié quelquechose ????
>> >> >> >
>> >> >> >>Dim st As StackTrace
>> >> >> >> st = New StackTrace(objException, True)
>> >> >> >>
>> >> >> >> Dim sf As StackFrame
>> >> >> >> sf = st.GetFrame(0)
>> >> >> >> sf.GetFileLineNumber()
>> >> >> >>Msgbox(sf.GetFileLineNumber()) résultat = 0 qui devrait
>> >> >> >>être
>> >> >> >>1826
>> >> >> >
>> >> >> > Merci!
>> >> >> >
>> >> >> > "Gilles TOURREAU [MVP]" wrote:
>> >> >> >
>> >> >> >> "Annie L." a écrit dans le
>> >> >> >> message
>> >> >> >> de
>> >> >> >> news:
>> >> >> >> > Bonjour!
>> >> >> >> > Pas évident! C'était beaucoup plus simple en VB 2003!
>> >> >> >> >
>> >> >> >> > Il me donne une erreur dans "InstanceException" :
>> >> >> >> > st = new StackTrace(InstanceException, true);
>> >> >> >> >
>> >> >> >> > Vous avez écrit ce code en C# ?
>> >> >> >> >
>> >> >> >> > Vous dites : NB : Il faut que les .pdb soient livrés avec
>> >> >> >> > votre
>> >> >> >> > exécutable...
>> >> >> >> >
>> >> >> >> > Qu'est ce qu'un ".pdb"? À quoi sert cette extension?
>> >> >> >> > Est-ce que nous pourrons avoir la ligne de l'erreur lorsque
>> >> >> >> > j'aurai
>> >> >> >> > créé
>> >> >> >> > un
>> >> >> >> > exécutable en mode "Release" ???
>> >> >> >> > Ce qui n'était pas possible avant! Mais cela serait vraiment
>> >> >> >> > super
>> >> >> >> > !!!
>> >> >> >> >
>> >> >> >> > Merci de votre aide!
>> >> >> >> >
>> >> >> >> >
>> >> >> >> >
>> >> >> >> > "Gilles TOURREAU [MVP]" wrote:
>> >> >> >> >
>> >> >> >> >> "Annie L." a écrit dans le
>> >> >> >> >> message
>> >> >> >> >> de
>> >> >> >> >> news:
>> >> >> >> >> > Comment faire pour connaître le n° ligne dans une erreur en
>> >> >> >> >> > mode
>> >> >> >> >> > "Debug"
>> >> >> >> >> >
>> >> >> >> >> > Pour le message = objException.message (Dim
>> >> >> >> >> > objException
>> >> >> >> >> > As
>> >> >> >> >> > Exception)
>> >> >> >> >> >
>> >> >> >> >> > En VB 2003, nous avions cette information, mais je ne le
>> >> >> >> >> > trouve
>> >> >> >> >> > pas
>> >> >> >> >> > en
>> >> >> >> >> > VB
>> >> >> >> >> > 2005!
>> >> >> >> >> >
>> >> >> >> >> > Merci de vos réponses!
>> >> >> >> >>
>> >> >> >> >>
>> >> >> >> >> Bonjour,
>> >> >> >> >>
>> >> >> >> >> StackTrace st;
>> >> >> >> >> st = new StackTrace(InstanceException, true);
>> >> >> >> >>
>> >> >> >> >> StackFrame sf;
>> >> >> >> >> sf = st.GetFrame(0);
>> >> >> >> >> sf.GetFileLineNumber();
>> >> >> >> >>
>> >> >> >> >> NB : Il faut que les .pdb soient livrés avec votre
>> >> >> >> >> exécutable...
>> >> >> >> >>
>> >> >> >> >> Cordialement
>> >> >> >> >>
>> >> >> >> >> --
>> >> >> >> >> Gilles TOURREAU - MVP C#
>> >> >> >> >>
>> >> >> >> >>
>> >> >> >> >> S.A.R.L. P.O.S
>> >> >> >> >> Le spécialiste en motoculture depuis + de 30 ans !
>> >> >> >> >> http://www.pos.fr
>> >> >> >> >>
>> >> >> >> >>
>> >> >> >>
>> >> >> >>
>> >> >> >> Oups autant pour moi !
>> >> >> >>
>> >> >> >> InstanceException est l'instance de l'exception que vous
>> >> >> >> récupérez
>> >> >> >> dans
>> >> >> >> le
>> >> >> >> bloc Catch.
>> >> >> >>
>> >> >> >> Dim st As StackTrace
>> >> >> >> st = New StackTrace(InstanceException, True)
>> >> >> >>
>> >> >> >> Dim sf As StackFrame
>> >> >> >> sf = st.GetFrame(0)
>> >> >> >> sf.GetFileLineNumber()
>> >> >> >>
>> >> >> >> Le .pdb est un fichier qui permet d'associer un n° de ligne de
>> >> >> >> votre
>> >> >> >> code
>> >> >> >> VB
>> >> >> >> au n° de ligne de code MSIL généré dans votre exécutable... Ce
>> >> >> >> fichier
>> >> >> >> est
>> >> >> >> indispensable par exemple, pour le débogage (le débogueur doit
>> >> >> >> savoir
>> >> >> >> durant
>> >> >> >> l'exécution de votre application à quelle ligne de code VB il se
>> >> >> >> trouve,
>> >> >> >> et
>> >> >> >> inversement).
>> >> >> >> Il est tout à fait possible de livrer les .pdb en Release, allez
>> >> >> >> dans
>> >> >> >> les
>> >> >> >> options de votre projet / Onglet Compiler / "Options avancées de
>> >> >> >> compil...".
>> >> >> >> Vous devez choisir dans "Générer les infos de débogage" :
>> >> >> >> "pdb-only".
>> >> >> >>
>> >> >> >> Faites cependant attention, les n° de lignes des exceptions
>> >> >> >> offrent
>> >> >> >> pour
>> >> >> >> les
>> >> >> >> applications "très publiques" (Site Web par exemple), une aide
>> >> >> >> très
>> >> >> >> précieuse pour les utilisateurs qui souhaiteraient trouver une
>> >> >> >> faille
>> >> >> >> dans
>> >> >> >> votre application... Pensez dans ce cas à ne pas afficher de
>> >> >> >> message
>> >> >> >> d'exception à l'écran...
>> >> >> >>
>> >> >> >> Cordialement
>> >> >> >>
>> >> >> >> --
>> >> >> >> Gilles TOURREAU - MVP C#
>> >> >> >>
>> >> >> >>
>> >> >> >> S.A.R.L. P.O.S
>> >> >> >> Le spécialiste en motoculture depuis + de 30 ans !
>> >> >> >> http://www.pos.fr
>> >> >> >>
>> >> >> >>
>> >> >>
>> >> >>
>> >> >> Tous les .pdb de chaque Assembly sont bien présents dans le
>> >> >> répertoire
>> >> >> Debug
>> >> >> ?
>> >> >>
>> >> >> Cordialement
>> >> >>
>> >> >> --
>> >> >> Gilles TOURREAU - MVP C#
>> >> >>
>> >> >>
>> >> >> S.A.R.L. P.O.S
>> >> >> Le spécialiste en motoculture depuis + de 30 ans !
>> >> >> http://www.pos.fr
>> >> >>
>> >> >>
>> >> >>
>> >>
>> >>
>> >> Bonjour,
>> >>
>> >> Les .pdb doivent être présent dans le même répertoire que
>> >> l'exécutable.
>> >> Il
>> >> doit en avoir 1 par assembly.
>> >> Vérifiez cette option dans vos projets :
>> >>
>> >> >> >> Il est tout à fait possible de livrer les .pdb en Release, allez
>> >> >> >> dans
>> >> >> >> les
>> >> >> >> options de votre projet / Onglet Compiler / "Options avancées de
>> >> >> >> compil...".
>> >> >> >> Vous devez choisir dans "Générer les infos de débogage" :
>> >> >> >> "pdb-only".
>> >>
>> >> Cordialement
>> >>
>> >> --
>> >> Gilles TOURREAU - MVP C#


Avatar
Patrice
Donc je commencerais déjà par mettre au début de l'application qq chose
comme :
#If DEBUG Then

MsgBox("DEBUG")

#Else

MsgBox("RELEASE")

#End If

Try

Throw New Exception("Essai")

Catch ex As Exception

MsgBox(ex.ToString)

End Try

ce qui devrait afficher debug puis :

System.Exception: Essai

à <method> dans <fichier>:ligne <ligne>



donc bien avec le n° de ligne.



Est-ce que cela marche dans VS.NET. So oui copier le fichier EXE et le
fichier PDB à l'emplacement voulu puis lancer directement l'EXE. Le n° de
ligne devrait aussi s'afficher.

Cela permettrait déjà de voir que tout est ok en mode DEBUG.








"Annie L." a écrit dans le message de
news:
Une application Windows très simple (pas de DLL externe, ni de classes
externes, ni de UserControl) vraiment très simple!

Mais quel est mon problème ???

Merci!

"Patrice" wrote:

En mode DEBUG ca marche, c'est une appli Windows ou ASP.NET...

--
Patrice

"Annie L." a écrit dans le message de
news:
> Ce que j'aimerais avant tout, pouvoir afficher le n° ligne en mode
> Debug
> !!!
>
> Dim st As StackTrace
>> >> >> >> st = New StackTrace(objException, True)
>> >> >> >>
>> >> >> >> Dim sf As StackFrame
>> >> >> >> sf = st.GetFrame(0)
>> >> >> >> sf.GetFileLineNumber()
>> >> >> >>Msgbox(sf.GetFileLineNumber()) résultat = 0 qui
>> >> >> >>devrait
>> >> >> >>être
>> >> >> >>1826
>
> Quelle erreur est-ce que je fais ????
>
> Merci!
>
>
> "Patrice" wrote:
>
>> Bonjour, je dirais :
>>
>> - soit tester dans la version de débogage sur le poste de
>> développement
>>
>> - j'avais jeté un oeil à ce point et j'avais vu aussi que les lignes
>> n'étaient pas forcément fiables (le PDB ne fournira pas forcément la
>> ligne
>> exacte selon les optimisations faites par le compilateur dans le code
>> en
>> mode release).
>>
>> Au final je n'avais pas creusé plus avant, mon expérience étant que le
>> message et la pile des appels est généralement suffisante pour
>> localiser
>> le
>> problème suffisamment facilement. Eviter les routines trop longues
>> peut
>> également aider (et est sans doute généralement une bonne pratique).
>>
>> --
>> Patrice
>>
>> "Annie L." a écrit dans le message
>> de
>> news:
>> > Vous dites : Vous devez choisir dans "Générer les infos de débogage"
>> > :
>> > "pdb-only".
>> > présentement, le choix dans cette liste est "Full" est-ce correct ou
>> > dois-je
>> > choisir "pdb-only". ?
>> > Vous dites aussi : dans le répertoire "Debug" est-ce là :
>> > Dans mes options de mon projet, option "Compiler", "Chemin de sortie
>> > de
>> > la
>> > génération = binx86Debug si oui, dans ce répertoire j'ai un
>> > fichier
>> > nommé <nomDeMonProjet>.pdb (pour avoir le n° ligne lors d'une
>> > erreur)
>> > car
>> > cela ne fonctionne pas du tout, il me donne toujours la ligne zéro
>> > (0).
>> >
>> > Autre chose, vous dites : Pensez dans ce cas à ne pas afficher de
>> > message
>> > d'exception à l'écran... Que voulez-vous dire par là ?
>> > exemple...!
>> > J'ai une gestion d'erreur qui affiche le nom de mon formulaire, le
>> > nom
>> > de
>> > la
>> > procédure/fonction le n° de ligne et le message d'erreur générer par
>> > "Exception"
>> >
>> > je commence plus à comprendre, cela va être plus simple que je le
>> > pensais!
>> >
>> > Merci!
>> >
>> >
>> > "Gilles TOURREAU [MVP]" wrote:
>> >
>> >> "Annie L." a écrit dans le
>> >> message
>> >> de
>> >> news:
>> >> > Là vous me perdez!
>> >> > Où vérifier ces fichiers?
>> >> > Un gros manque de connaissance de ma part !!!!
>> >> > Veuillez m'excusez!
>> >> > Expliquez-moi S.V.P.
>> >> >
>> >> > Merci!
>> >> >
>> >> > "Gilles TOURREAU [MVP]" wrote:
>> >> >
>> >> >> "Annie L." a écrit dans le
>> >> >> message
>> >> >> de
>> >> >> news:
>> >> >> > Il y a quelquechose que je ne comprends pas!
>> >> >> > J'ai mis ce code dans un "Catch objException As Exception" et
>> >> >> > il
>> >> >> > me
>> >> >> > donne
>> >> >> > comme erreur la ligne 0 !!!
>> >> >> > Ai-je oublié quelquechose ????
>> >> >> >
>> >> >> >>Dim st As StackTrace
>> >> >> >> st = New StackTrace(objException, True)
>> >> >> >>
>> >> >> >> Dim sf As StackFrame
>> >> >> >> sf = st.GetFrame(0)
>> >> >> >> sf.GetFileLineNumber()
>> >> >> >>Msgbox(sf.GetFileLineNumber()) résultat = 0 qui
>> >> >> >>devrait
>> >> >> >>être
>> >> >> >>1826
>> >> >> >
>> >> >> > Merci!
>> >> >> >
>> >> >> > "Gilles TOURREAU [MVP]" wrote:
>> >> >> >
>> >> >> >> "Annie L." a écrit dans le
>> >> >> >> message
>> >> >> >> de
>> >> >> >> news:
>> >> >> >> > Bonjour!
>> >> >> >> > Pas évident! C'était beaucoup plus simple en VB 2003!
>> >> >> >> >
>> >> >> >> > Il me donne une erreur dans "InstanceException" :
>> >> >> >> > st = new StackTrace(InstanceException, true);
>> >> >> >> >
>> >> >> >> > Vous avez écrit ce code en C# ?
>> >> >> >> >
>> >> >> >> > Vous dites : NB : Il faut que les .pdb soient livrés avec
>> >> >> >> > votre
>> >> >> >> > exécutable...
>> >> >> >> >
>> >> >> >> > Qu'est ce qu'un ".pdb"? À quoi sert cette extension?
>> >> >> >> > Est-ce que nous pourrons avoir la ligne de l'erreur lorsque
>> >> >> >> > j'aurai
>> >> >> >> > créé
>> >> >> >> > un
>> >> >> >> > exécutable en mode "Release" ???
>> >> >> >> > Ce qui n'était pas possible avant! Mais cela serait
>> >> >> >> > vraiment
>> >> >> >> > super
>> >> >> >> > !!!
>> >> >> >> >
>> >> >> >> > Merci de votre aide!
>> >> >> >> >
>> >> >> >> >
>> >> >> >> >
>> >> >> >> > "Gilles TOURREAU [MVP]" wrote:
>> >> >> >> >
>> >> >> >> >> "Annie L." a écrit dans
>> >> >> >> >> le
>> >> >> >> >> message
>> >> >> >> >> de
>> >> >> >> >> news:
>> >> >> >> >> > Comment faire pour connaître le n° ligne dans une erreur
>> >> >> >> >> > en
>> >> >> >> >> > mode
>> >> >> >> >> > "Debug"
>> >> >> >> >> >
>> >> >> >> >> > Pour le message = objException.message (Dim
>> >> >> >> >> > objException
>> >> >> >> >> > As
>> >> >> >> >> > Exception)
>> >> >> >> >> >
>> >> >> >> >> > En VB 2003, nous avions cette information, mais je ne le
>> >> >> >> >> > trouve
>> >> >> >> >> > pas
>> >> >> >> >> > en
>> >> >> >> >> > VB
>> >> >> >> >> > 2005!
>> >> >> >> >> >
>> >> >> >> >> > Merci de vos réponses!
>> >> >> >> >>
>> >> >> >> >>
>> >> >> >> >> Bonjour,
>> >> >> >> >>
>> >> >> >> >> StackTrace st;
>> >> >> >> >> st = new StackTrace(InstanceException, true);
>> >> >> >> >>
>> >> >> >> >> StackFrame sf;
>> >> >> >> >> sf = st.GetFrame(0);
>> >> >> >> >> sf.GetFileLineNumber();
>> >> >> >> >>
>> >> >> >> >> NB : Il faut que les .pdb soient livrés avec votre
>> >> >> >> >> exécutable...
>> >> >> >> >>
>> >> >> >> >> Cordialement
>> >> >> >> >>
>> >> >> >> >> --
>> >> >> >> >> Gilles TOURREAU - MVP C#
>> >> >> >> >>
>> >> >> >> >>
>> >> >> >> >> S.A.R.L. P.O.S
>> >> >> >> >> Le spécialiste en motoculture depuis + de 30 ans !
>> >> >> >> >> http://www.pos.fr
>> >> >> >> >>
>> >> >> >> >>
>> >> >> >>
>> >> >> >>
>> >> >> >> Oups autant pour moi !
>> >> >> >>
>> >> >> >> InstanceException est l'instance de l'exception que vous
>> >> >> >> récupérez
>> >> >> >> dans
>> >> >> >> le
>> >> >> >> bloc Catch.
>> >> >> >>
>> >> >> >> Dim st As StackTrace
>> >> >> >> st = New StackTrace(InstanceException, True)
>> >> >> >>
>> >> >> >> Dim sf As StackFrame
>> >> >> >> sf = st.GetFrame(0)
>> >> >> >> sf.GetFileLineNumber()
>> >> >> >>
>> >> >> >> Le .pdb est un fichier qui permet d'associer un n° de ligne
>> >> >> >> de
>> >> >> >> votre
>> >> >> >> code
>> >> >> >> VB
>> >> >> >> au n° de ligne de code MSIL généré dans votre exécutable...
>> >> >> >> Ce
>> >> >> >> fichier
>> >> >> >> est
>> >> >> >> indispensable par exemple, pour le débogage (le débogueur
>> >> >> >> doit
>> >> >> >> savoir
>> >> >> >> durant
>> >> >> >> l'exécution de votre application à quelle ligne de code VB il
>> >> >> >> se
>> >> >> >> trouve,
>> >> >> >> et
>> >> >> >> inversement).
>> >> >> >> Il est tout à fait possible de livrer les .pdb en Release,
>> >> >> >> allez
>> >> >> >> dans
>> >> >> >> les
>> >> >> >> options de votre projet / Onglet Compiler / "Options avancées
>> >> >> >> de
>> >> >> >> compil...".
>> >> >> >> Vous devez choisir dans "Générer les infos de débogage" :
>> >> >> >> "pdb-only".
>> >> >> >>
>> >> >> >> Faites cependant attention, les n° de lignes des exceptions
>> >> >> >> offrent
>> >> >> >> pour
>> >> >> >> les
>> >> >> >> applications "très publiques" (Site Web par exemple), une
>> >> >> >> aide
>> >> >> >> très
>> >> >> >> précieuse pour les utilisateurs qui souhaiteraient trouver
>> >> >> >> une
>> >> >> >> faille
>> >> >> >> dans
>> >> >> >> votre application... Pensez dans ce cas à ne pas afficher de
>> >> >> >> message
>> >> >> >> d'exception à l'écran...
>> >> >> >>
>> >> >> >> Cordialement
>> >> >> >>
>> >> >> >> --
>> >> >> >> Gilles TOURREAU - MVP C#
>> >> >> >>
>> >> >> >>
>> >> >> >> S.A.R.L. P.O.S
>> >> >> >> Le spécialiste en motoculture depuis + de 30 ans !
>> >> >> >> http://www.pos.fr
>> >> >> >>
>> >> >> >>
>> >> >>
>> >> >>
>> >> >> Tous les .pdb de chaque Assembly sont bien présents dans le
>> >> >> répertoire
>> >> >> Debug
>> >> >> ?
>> >> >>
>> >> >> Cordialement
>> >> >>
>> >> >> --
>> >> >> Gilles TOURREAU - MVP C#
>> >> >>
>> >> >>
>> >> >> S.A.R.L. P.O.S
>> >> >> Le spécialiste en motoculture depuis + de 30 ans !
>> >> >> http://www.pos.fr
>> >> >>
>> >> >>
>> >> >>
>> >>
>> >>
>> >> Bonjour,
>> >>
>> >> Les .pdb doivent être présent dans le même répertoire que
>> >> l'exécutable.
>> >> Il
>> >> doit en avoir 1 par assembly.
>> >> Vérifiez cette option dans vos projets :
>> >>
>> >> >> >> Il est tout à fait possible de livrer les .pdb en Release,
>> >> >> >> allez
>> >> >> >> dans
>> >> >> >> les
>> >> >> >> options de votre projet / Onglet Compiler / "Options avancées
>> >> >> >> de
>> >> >> >> compil...".
>> >> >> >> Vous devez choisir dans "Générer les infos de débogage" :
>> >> >> >> "pdb-only".
>> >>
>> >> Cordialement
>> >>
>> >> --
>> >> Gilles TOURREAU - MVP C#




Avatar
Annie L.
Cela marche très bien avec le "bon" n° ligne.

Vous dites : So oui copier le fichier EXE et le
fichier PDB à l'emplacement voulu puis lancer directement l'EXE. Le n° de
ligne devrait aussi s'afficher.



Je ne comprends pas OÙ le copier ??? De toute façon cela marche bien! Je
suis bien en mode "Debug" que je vois bien dans les propriétés de mon
projet!!!

Ce qui est bizarre, avec cet exemple, je vois mon n° ligne mais pas avec
"StackTrace" !!!!!

merci!

"Patrice" wrote:

Donc je commencerais déjà par mettre au début de l'application qq chose
comme :
#If DEBUG Then

MsgBox("DEBUG")

#Else

MsgBox("RELEASE")

#End If

Try

Throw New Exception("Essai")

Catch ex As Exception

MsgBox(ex.ToString)

End Try

ce qui devrait afficher debug puis :

System.Exception: Essai

à <method> dans <fichier>:ligne <ligne>



donc bien avec le n° de ligne.



Est-ce que cela marche dans VS.NET. So oui copier le fichier EXE et le
fichier PDB à l'emplacement voulu puis lancer directement l'EXE. Le n° de
ligne devrait aussi s'afficher.

Cela permettrait déjà de voir que tout est ok en mode DEBUG.








"Annie L." a écrit dans le message de
news:
> Une application Windows très simple (pas de DLL externe, ni de classes
> externes, ni de UserControl) vraiment très simple!
>
> Mais quel est mon problème ???
>
> Merci!
>
> "Patrice" wrote:
>
>> En mode DEBUG ca marche, c'est une appli Windows ou ASP.NET...
>>
>> --
>> Patrice
>>
>> "Annie L." a écrit dans le message de
>> news:
>> > Ce que j'aimerais avant tout, pouvoir afficher le n° ligne en mode
>> > Debug
>> > !!!
>> >
>> > Dim st As StackTrace
>> >> >> >> >> st = New StackTrace(objException, True)
>> >> >> >> >>
>> >> >> >> >> Dim sf As StackFrame
>> >> >> >> >> sf = st.GetFrame(0)
>> >> >> >> >> sf.GetFileLineNumber()
>> >> >> >> >>Msgbox(sf.GetFileLineNumber()) résultat = 0 qui
>> >> >> >> >>devrait
>> >> >> >> >>être
>> >> >> >> >>1826
>> >
>> > Quelle erreur est-ce que je fais ????
>> >
>> > Merci!
>> >
>> >
>> > "Patrice" wrote:
>> >
>> >> Bonjour, je dirais :
>> >>
>> >> - soit tester dans la version de débogage sur le poste de
>> >> développement
>> >>
>> >> - j'avais jeté un oeil à ce point et j'avais vu aussi que les lignes
>> >> n'étaient pas forcément fiables (le PDB ne fournira pas forcément la
>> >> ligne
>> >> exacte selon les optimisations faites par le compilateur dans le code
>> >> en
>> >> mode release).
>> >>
>> >> Au final je n'avais pas creusé plus avant, mon expérience étant que le
>> >> message et la pile des appels est généralement suffisante pour
>> >> localiser
>> >> le
>> >> problème suffisamment facilement. Eviter les routines trop longues
>> >> peut
>> >> également aider (et est sans doute généralement une bonne pratique).
>> >>
>> >> --
>> >> Patrice
>> >>
>> >> "Annie L." a écrit dans le message
>> >> de
>> >> news:
>> >> > Vous dites : Vous devez choisir dans "Générer les infos de débogage"
>> >> > :
>> >> > "pdb-only".
>> >> > présentement, le choix dans cette liste est "Full" est-ce correct ou
>> >> > dois-je
>> >> > choisir "pdb-only". ?
>> >> > Vous dites aussi : dans le répertoire "Debug" est-ce là :
>> >> > Dans mes options de mon projet, option "Compiler", "Chemin de sortie
>> >> > de
>> >> > la
>> >> > génération = binx86Debug si oui, dans ce répertoire j'ai un
>> >> > fichier
>> >> > nommé <nomDeMonProjet>.pdb (pour avoir le n° ligne lors d'une
>> >> > erreur)
>> >> > car
>> >> > cela ne fonctionne pas du tout, il me donne toujours la ligne zéro
>> >> > (0).
>> >> >
>> >> > Autre chose, vous dites : Pensez dans ce cas à ne pas afficher de
>> >> > message
>> >> > d'exception à l'écran... Que voulez-vous dire par là ?
>> >> > exemple...!
>> >> > J'ai une gestion d'erreur qui affiche le nom de mon formulaire, le
>> >> > nom
>> >> > de
>> >> > la
>> >> > procédure/fonction le n° de ligne et le message d'erreur générer par
>> >> > "Exception"
>> >> >
>> >> > je commence plus à comprendre, cela va être plus simple que je le
>> >> > pensais!
>> >> >
>> >> > Merci!
>> >> >
>> >> >
>> >> > "Gilles TOURREAU [MVP]" wrote:
>> >> >
>> >> >> "Annie L." a écrit dans le
>> >> >> message
>> >> >> de
>> >> >> news:
>> >> >> > Là vous me perdez!
>> >> >> > Où vérifier ces fichiers?
>> >> >> > Un gros manque de connaissance de ma part !!!!
>> >> >> > Veuillez m'excusez!
>> >> >> > Expliquez-moi S.V.P.
>> >> >> >
>> >> >> > Merci!
>> >> >> >
>> >> >> > "Gilles TOURREAU [MVP]" wrote:
>> >> >> >
>> >> >> >> "Annie L." a écrit dans le
>> >> >> >> message
>> >> >> >> de
>> >> >> >> news:
>> >> >> >> > Il y a quelquechose que je ne comprends pas!
>> >> >> >> > J'ai mis ce code dans un "Catch objException As Exception" et
>> >> >> >> > il
>> >> >> >> > me
>> >> >> >> > donne
>> >> >> >> > comme erreur la ligne 0 !!!
>> >> >> >> > Ai-je oublié quelquechose ????
>> >> >> >> >
>> >> >> >> >>Dim st As StackTrace
>> >> >> >> >> st = New StackTrace(objException, True)
>> >> >> >> >>
>> >> >> >> >> Dim sf As StackFrame
>> >> >> >> >> sf = st.GetFrame(0)
>> >> >> >> >> sf.GetFileLineNumber()
>> >> >> >> >>Msgbox(sf.GetFileLineNumber()) résultat = 0 qui
>> >> >> >> >>devrait
>> >> >> >> >>être
>> >> >> >> >>1826
>> >> >> >> >
>> >> >> >> > Merci!
>> >> >> >> >
>> >> >> >> > "Gilles TOURREAU [MVP]" wrote:
>> >> >> >> >
>> >> >> >> >> "Annie L." a écrit dans le
>> >> >> >> >> message
>> >> >> >> >> de
>> >> >> >> >> news:
>> >> >> >> >> > Bonjour!
>> >> >> >> >> > Pas évident! C'était beaucoup plus simple en VB 2003!
>> >> >> >> >> >
>> >> >> >> >> > Il me donne une erreur dans "InstanceException" :
>> >> >> >> >> > st = new StackTrace(InstanceException, true);
>> >> >> >> >> >
>> >> >> >> >> > Vous avez écrit ce code en C# ?
>> >> >> >> >> >
>> >> >> >> >> > Vous dites : NB : Il faut que les .pdb soient livrés avec
>> >> >> >> >> > votre
>> >> >> >> >> > exécutable...
>> >> >> >> >> >
>> >> >> >> >> > Qu'est ce qu'un ".pdb"? À quoi sert cette extension?
>> >> >> >> >> > Est-ce que nous pourrons avoir la ligne de l'erreur lorsque
>> >> >> >> >> > j'aurai
>> >> >> >> >> > créé
>> >> >> >> >> > un
>> >> >> >> >> > exécutable en mode "Release" ???
>> >> >> >> >> > Ce qui n'était pas possible avant! Mais cela serait
>> >> >> >> >> > vraiment
>> >> >> >> >> > super
>> >> >> >> >> > !!!
>> >> >> >> >> >
>> >> >> >> >> > Merci de votre aide!
>> >> >> >> >> >
>> >> >> >> >> >
>> >> >> >> >> >
>> >> >> >> >> > "Gilles TOURREAU [MVP]" wrote:
>> >> >> >> >> >
>> >> >> >> >> >> "Annie L." a écrit dans
>> >> >> >> >> >> le
>> >> >> >> >> >> message
>> >> >> >> >> >> de
>> >> >> >> >> >> news:
>> >> >> >> >> >> > Comment faire pour connaître le n° ligne dans une erreur
>> >> >> >> >> >> > en
>> >> >> >> >> >> > mode
>> >> >> >> >> >> > "Debug"
>> >> >> >> >> >> >
>> >> >> >> >> >> > Pour le message = objException.message (Dim
>> >> >> >> >> >> > objException
>> >> >> >> >> >> > As
>> >> >> >> >> >> > Exception)
>> >> >> >> >> >> >
>> >> >> >> >> >> > En VB 2003, nous avions cette information, mais je ne le
>> >> >> >> >> >> > trouve
>> >> >> >> >> >> > pas
>> >> >> >> >> >> > en
>> >> >> >> >> >> > VB
>> >> >> >> >> >> > 2005!
>> >> >> >> >> >> >
>> >> >> >> >> >> > Merci de vos réponses!
>> >> >> >> >> >>
>> >> >> >> >> >>
>> >> >> >> >> >> Bonjour,
>> >> >> >> >> >>
>> >> >> >> >> >> StackTrace st;
>> >> >> >> >> >> st = new StackTrace(InstanceException, true);
>> >> >> >> >> >>
>> >> >> >> >> >> StackFrame sf;
>> >> >> >> >> >> sf = st.GetFrame(0);
>> >> >> >> >> >> sf.GetFileLineNumber();
>> >> >> >> >> >>
>> >> >> >> >> >> NB : Il faut que les .pdb soient livrés avec votre
>> >> >> >> >> >> exécutable...
>> >> >> >> >> >>
>> >> >> >> >> >> Cordialement
>> >> >> >> >> >>
>> >> >> >> >> >> --
>> >> >> >> >> >> Gilles TOURREAU - MVP C#
>> >> >> >> >> >>
>> >> >> >> >> >>
>> >> >> >> >> >> S.A.R.L. P.O.S
>> >> >> >> >> >> Le spécialiste en motoculture depuis + de 30 ans !
>> >> >> >> >> >> http://www.pos.fr
>> >> >> >> >> >>
>> >> >> >> >> >>
>> >> >> >> >>
>> >> >> >> >>
>> >> >> >> >> Oups autant pour moi !
>> >> >> >> >>
>> >> >> >> >> InstanceException est l'instance de l'exception que vous
>> >> >> >> >> récupérez
>> >> >> >> >> dans
>> >> >> >> >> le
>> >> >> >> >> bloc Catch.
>> >> >> >> >>
>> >> >> >> >> Dim st As StackTrace
>> >> >> >> >> st = New StackTrace(InstanceException, True)
>> >> >> >> >>
>> >> >> >> >> Dim sf As StackFrame
>> >> >> >> >> sf = st.GetFrame(0)
>> >> >> >> >> sf.GetFileLineNumber()
>> >> >> >> >>
>> >> >> >> >> Le .pdb est un fichier qui permet d'associer un n° de ligne
>> >> >> >> >> de
>> >> >> >> >> votre
>> >> >> >> >> code
>> >> >> >> >> VB
>> >> >> >> >> au n° de ligne de code MSIL généré dans votre exécutable...
>> >> >> >> >> Ce
>> >> >> >> >> fichier
>> >> >> >> >> est
>> >> >> >> >> indispensable par exemple, pour le débogage (le débogueur
>> >> >> >> >> doit


Avatar
Patrice
Dans n'importe quel autre dossier. Cétait juste pour simuler par exemple la
copie de l'exe et du pdb sur un poste qui ne disposerait pas de VS.NET,
lancer l'EXE directement et vérifier que cela marche toujours dans ce cas...

Je vois qu'au départ le problème est que l'on utilisait Exception.Message
qui ne récupère donc que le message.

Est-ce que Exception.ToString retourne bien toutes les informations voulues
?

Tu peux remplacer le code précédent par :
Try

Throw New Exception("Essai")

Catch ex As Exception

Dim s As New StackTrace(ex, True)

MsgBox(ex.ToString & vbCrLf & "---" & vbCrLf & s.ToString)

End Try



Tu devrais bien retrouver le n° de ligne dans les deux cas (donc inutile de
s'embêter avec le StackTrace, faire juste un ex.ToString).

Si tout semble ok en DEBUG vois si on en reste là ou si tu veux aussi voir
ce que cela donne en mode RELEASE (à mon avis le n° ligne n'est pas aussi
crucial que cela et ne sera de toute façon d'après ce que j'ai vu pas
forcément très précis).



Ou alors c'est simplement parce que ex.Message tu n'avais QUE le message ce
qui effectivement ne mêne pas bien loin. Avec ex.ToString, en RELEASE tu
n'as pas le n° de ligne mais tu as toujours la trace des appels qui permet
de voir dans quelle routine survient l'erreur et le message est souvent
suffisant pour trancher et trouver l'emplacement de l'erreur dans le routine
concernée...

--
Patrice

"Annie L." a écrit dans le message de
news:
Cela marche très bien avec le "bon" n° ligne.

Vous dites : So oui copier le fichier EXE et le
fichier PDB à l'emplacement voulu puis lancer directement l'EXE. Le n° de
ligne devrait aussi s'afficher.



Je ne comprends pas OÙ le copier ??? De toute façon cela marche bien! Je
suis bien en mode "Debug" que je vois bien dans les propriétés de mon
projet!!!

Ce qui est bizarre, avec cet exemple, je vois mon n° ligne mais pas avec
"StackTrace" !!!!!

merci!

"Patrice" wrote:

Donc je commencerais déjà par mettre au début de l'application qq chose
comme :
#If DEBUG Then

MsgBox("DEBUG")

#Else

MsgBox("RELEASE")

#End If

Try

Throw New Exception("Essai")

Catch ex As Exception

MsgBox(ex.ToString)

End Try

ce qui devrait afficher debug puis :

System.Exception: Essai

à <method> dans <fichier>:ligne <ligne>



donc bien avec le n° de ligne.



Est-ce que cela marche dans VS.NET. So oui copier le fichier EXE et le
fichier PDB à l'emplacement voulu puis lancer directement l'EXE. Le n° de
ligne devrait aussi s'afficher.

Cela permettrait déjà de voir que tout est ok en mode DEBUG.








"Annie L." a écrit dans le message de
news:
> Une application Windows très simple (pas de DLL externe, ni de classes
> externes, ni de UserControl) vraiment très simple!
>
> Mais quel est mon problème ???
>
> Merci!
>
> "Patrice" wrote:
>
>> En mode DEBUG ca marche, c'est une appli Windows ou ASP.NET...
>>
>> --
>> Patrice
>>
>> "Annie L." a écrit dans le message
>> de
>> news:
>> > Ce que j'aimerais avant tout, pouvoir afficher le n° ligne en mode
>> > Debug
>> > !!!
>> >
>> > Dim st As StackTrace
>> >> >> >> >> st = New StackTrace(objException, True)
>> >> >> >> >>
>> >> >> >> >> Dim sf As StackFrame
>> >> >> >> >> sf = st.GetFrame(0)
>> >> >> >> >> sf.GetFileLineNumber()
>> >> >> >> >>Msgbox(sf.GetFileLineNumber()) résultat = 0 qui
>> >> >> >> >>devrait
>> >> >> >> >>être
>> >> >> >> >>1826
>> >
>> > Quelle erreur est-ce que je fais ????
>> >
>> > Merci!
>> >
>> >
>> > "Patrice" wrote:
>> >
>> >> Bonjour, je dirais :
>> >>
>> >> - soit tester dans la version de débogage sur le poste de
>> >> développement
>> >>
>> >> - j'avais jeté un oeil à ce point et j'avais vu aussi que les
>> >> lignes
>> >> n'étaient pas forcément fiables (le PDB ne fournira pas forcément
>> >> la
>> >> ligne
>> >> exacte selon les optimisations faites par le compilateur dans le
>> >> code
>> >> en
>> >> mode release).
>> >>
>> >> Au final je n'avais pas creusé plus avant, mon expérience étant que
>> >> le
>> >> message et la pile des appels est généralement suffisante pour
>> >> localiser
>> >> le
>> >> problème suffisamment facilement. Eviter les routines trop longues
>> >> peut
>> >> également aider (et est sans doute généralement une bonne
>> >> pratique).
>> >>
>> >> --
>> >> Patrice
>> >>
>> >> "Annie L." a écrit dans le
>> >> message
>> >> de
>> >> news:
>> >> > Vous dites : Vous devez choisir dans "Générer les infos de
>> >> > débogage"
>> >> > :
>> >> > "pdb-only".
>> >> > présentement, le choix dans cette liste est "Full" est-ce correct
>> >> > ou
>> >> > dois-je
>> >> > choisir "pdb-only". ?
>> >> > Vous dites aussi : dans le répertoire "Debug" est-ce là :
>> >> > Dans mes options de mon projet, option "Compiler", "Chemin de
>> >> > sortie
>> >> > de
>> >> > la
>> >> > génération = binx86Debug si oui, dans ce répertoire j'ai un
>> >> > fichier
>> >> > nommé <nomDeMonProjet>.pdb (pour avoir le n° ligne lors d'une
>> >> > erreur)
>> >> > car
>> >> > cela ne fonctionne pas du tout, il me donne toujours la ligne
>> >> > zéro
>> >> > (0).
>> >> >
>> >> > Autre chose, vous dites : Pensez dans ce cas à ne pas afficher de
>> >> > message
>> >> > d'exception à l'écran... Que voulez-vous dire par là ?
>> >> > exemple...!
>> >> > J'ai une gestion d'erreur qui affiche le nom de mon formulaire,
>> >> > le
>> >> > nom
>> >> > de
>> >> > la
>> >> > procédure/fonction le n° de ligne et le message d'erreur générer
>> >> > par
>> >> > "Exception"
>> >> >
>> >> > je commence plus à comprendre, cela va être plus simple que je le
>> >> > pensais!
>> >> >
>> >> > Merci!
>> >> >
>> >> >
>> >> > "Gilles TOURREAU [MVP]" wrote:
>> >> >
>> >> >> "Annie L." a écrit dans le
>> >> >> message
>> >> >> de
>> >> >> news:
>> >> >> > Là vous me perdez!
>> >> >> > Où vérifier ces fichiers?
>> >> >> > Un gros manque de connaissance de ma part !!!!
>> >> >> > Veuillez m'excusez!
>> >> >> > Expliquez-moi S.V.P.
>> >> >> >
>> >> >> > Merci!
>> >> >> >
>> >> >> > "Gilles TOURREAU [MVP]" wrote:
>> >> >> >
>> >> >> >> "Annie L." a écrit dans le
>> >> >> >> message
>> >> >> >> de
>> >> >> >> news:
>> >> >> >> > Il y a quelquechose que je ne comprends pas!
>> >> >> >> > J'ai mis ce code dans un "Catch objException As Exception"
>> >> >> >> > et
>> >> >> >> > il
>> >> >> >> > me
>> >> >> >> > donne
>> >> >> >> > comme erreur la ligne 0 !!!
>> >> >> >> > Ai-je oublié quelquechose ????
>> >> >> >> >
>> >> >> >> >>Dim st As StackTrace
>> >> >> >> >> st = New StackTrace(objException, True)
>> >> >> >> >>
>> >> >> >> >> Dim sf As StackFrame
>> >> >> >> >> sf = st.GetFrame(0)
>> >> >> >> >> sf.GetFileLineNumber()
>> >> >> >> >>Msgbox(sf.GetFileLineNumber()) résultat = 0 qui
>> >> >> >> >>devrait
>> >> >> >> >>être
>> >> >> >> >>1826
>> >> >> >> >
>> >> >> >> > Merci!
>> >> >> >> >
>> >> >> >> > "Gilles TOURREAU [MVP]" wrote:
>> >> >> >> >
>> >> >> >> >> "Annie L." a écrit dans
>> >> >> >> >> le
>> >> >> >> >> message
>> >> >> >> >> de
>> >> >> >> >> news:
>> >> >> >> >> > Bonjour!
>> >> >> >> >> > Pas évident! C'était beaucoup plus simple en VB 2003!
>> >> >> >> >> >
>> >> >> >> >> > Il me donne une erreur dans "InstanceException" :
>> >> >> >> >> > st = new StackTrace(InstanceException, true);
>> >> >> >> >> >
>> >> >> >> >> > Vous avez écrit ce code en C# ?
>> >> >> >> >> >
>> >> >> >> >> > Vous dites : NB : Il faut que les .pdb soient livrés
>> >> >> >> >> > avec
>> >> >> >> >> > votre
>> >> >> >> >> > exécutable...
>> >> >> >> >> >
>> >> >> >> >> > Qu'est ce qu'un ".pdb"? À quoi sert cette extension?
>> >> >> >> >> > Est-ce que nous pourrons avoir la ligne de l'erreur
>> >> >> >> >> > lorsque
>> >> >> >> >> > j'aurai
>> >> >> >> >> > créé
>> >> >> >> >> > un
>> >> >> >> >> > exécutable en mode "Release" ???
>> >> >> >> >> > Ce qui n'était pas possible avant! Mais cela serait
>> >> >> >> >> > vraiment
>> >> >> >> >> > super
>> >> >> >> >> > !!!
>> >> >> >> >> >
>> >> >> >> >> > Merci de votre aide!
>> >> >> >> >> >
>> >> >> >> >> >
>> >> >> >> >> >
>> >> >> >> >> > "Gilles TOURREAU [MVP]" wrote:
>> >> >> >> >> >
>> >> >> >> >> >> "Annie L." a écrit
>> >> >> >> >> >> dans
>> >> >> >> >> >> le
>> >> >> >> >> >> message
>> >> >> >> >> >> de
>> >> >> >> >> >> news:
>> >> >> >> >> >> > Comment faire pour connaître le n° ligne dans une
>> >> >> >> >> >> > erreur
>> >> >> >> >> >> > en
>> >> >> >> >> >> > mode
>> >> >> >> >> >> > "Debug"
>> >> >> >> >> >> >
>> >> >> >> >> >> > Pour le message = objException.message (Dim
>> >> >> >> >> >> > objException
>> >> >> >> >> >> > As
>> >> >> >> >> >> > Exception)
>> >> >> >> >> >> >
>> >> >> >> >> >> > En VB 2003, nous avions cette information, mais je ne
>> >> >> >> >> >> > le
>> >> >> >> >> >> > trouve
>> >> >> >> >> >> > pas
>> >> >> >> >> >> > en
>> >> >> >> >> >> > VB
>> >> >> >> >> >> > 2005!
>> >> >> >> >> >> >
>> >> >> >> >> >> > Merci de vos réponses!
>> >> >> >> >> >>
>> >> >> >> >> >>
>> >> >> >> >> >> Bonjour,
>> >> >> >> >> >>
>> >> >> >> >> >> StackTrace st;
>> >> >> >> >> >> st = new StackTrace(InstanceException, true);
>> >> >> >> >> >>
>> >> >> >> >> >> StackFrame sf;
>> >> >> >> >> >> sf = st.GetFrame(0);
>> >> >> >> >> >> sf.GetFileLineNumber();
>> >> >> >> >> >>
>> >> >> >> >> >> NB : Il faut que les .pdb soient livrés avec votre
>> >> >> >> >> >> exécutable...
>> >> >> >> >> >>
>> >> >> >> >> >> Cordialement
>> >> >> >> >> >>
>> >> >> >> >> >> --
>> >> >> >> >> >> Gilles TOURREAU - MVP C#
>> >> >> >> >> >>
>> >> >> >> >> >>
>> >> >> >> >> >> S.A.R.L. P.O.S
>> >> >> >> >> >> Le spécialiste en motoculture depuis + de 30 ans !
>> >> >> >> >> >> http://www.pos.fr
>> >> >> >> >> >>
>> >> >> >> >> >>
>> >> >> >> >>
>> >> >> >> >>
>> >> >> >> >> Oups autant pour moi !
>> >> >> >> >>
>> >> >> >> >> InstanceException est l'instance de l'exception que vous
>> >> >> >> >> récupérez
>> >> >> >> >> dans
>> >> >> >> >> le
>> >> >> >> >> bloc Catch.
>> >> >> >> >>
>> >> >> >> >> Dim st As StackTrace
>> >> >> >> >> st = New StackTrace(InstanceException, True)
>> >> >> >> >>
>> >> >> >> >> Dim sf As StackFrame
>> >> >> >> >> sf = st.GetFrame(0)
>> >> >> >> >> sf.GetFileLineNumber()
>> >> >> >> >>
>> >> >> >> >> Le .pdb est un fichier qui permet d'associer un n° de
>> >> >> >> >> ligne
>> >> >> >> >> de
>> >> >> >> >> votre
>> >> >> >> >> code
>> >> >> >> >> VB
>> >> >> >> >> au n° de ligne de code MSIL généré dans votre
>> >> >> >> >> exécutable...
>> >> >> >> >> Ce
>> >> >> >> >> fichier
>> >> >> >> >> est
>> >> >> >> >> indispensable par exemple, pour le débogage (le débogueur
>> >> >> >> >> doit




Avatar
Annie L.
Exception.ToString retourne bien toutes les informations voulues
En fait, je n'ai pas vraiment besoin de "StackTrace" !!! Comme tu le dit !!
J'obtiens la même information avec Exception.ToString !!!

Je me souviens comment je procédais en VB 2003 ! Je lisais le ex.ToString ou
le StackTrace et le mot "line" ou "ligne" (en français) et le n° de l'erreur
suivait! Et c'est comme ça que j'obtenais mon n° ligne. Dans ce cas-ci
(pratiquement la même chose), je lis simplement à partir de la fin de
ex.ToString jusqu'à temps que je rencontre un espace..
ex : ... .vb:ligne 1734 car le n° ligne se situe en dernier comme j'ai
pu le voir dans les exemples que tu m'as envoyé car je veux avoir juste le n°
ligne séparé!

Je pense que j'ai trouvé ce que je veux et je vais procéder comme avant cela
fonctionnait très bien (comme décrit ci-dessus).
En mode "Release" je n'ai jamais eu de n° ligne et je m'en suis très bien
arrangé ainsi ! Je pense que tout est RÉGLÉ et un gros merci!

Merci!

"Patrice" wrote:

Dans n'importe quel autre dossier. Cétait juste pour simuler par exemple la
copie de l'exe et du pdb sur un poste qui ne disposerait pas de VS.NET,
lancer l'EXE directement et vérifier que cela marche toujours dans ce cas...

Je vois qu'au départ le problème est que l'on utilisait Exception.Message
qui ne récupère donc que le message.

Est-ce que Exception.ToString retourne bien toutes les informations voulues
?

Tu peux remplacer le code précédent par :
Try

Throw New Exception("Essai")

Catch ex As Exception

Dim s As New StackTrace(ex, True)

MsgBox(ex.ToString & vbCrLf & "---" & vbCrLf & s.ToString)

End Try



Tu devrais bien retrouver le n° de ligne dans les deux cas (donc inutile de
s'embêter avec le StackTrace, faire juste un ex.ToString).

Si tout semble ok en DEBUG vois si on en reste là ou si tu veux aussi voir
ce que cela donne en mode RELEASE (à mon avis le n° ligne n'est pas aussi
crucial que cela et ne sera de toute façon d'après ce que j'ai vu pas
forcément très précis).



Ou alors c'est simplement parce que ex.Message tu n'avais QUE le message ce
qui effectivement ne mêne pas bien loin. Avec ex.ToString, en RELEASE tu
n'as pas le n° de ligne mais tu as toujours la trace des appels qui permet
de voir dans quelle routine survient l'erreur et le message est souvent
suffisant pour trancher et trouver l'emplacement de l'erreur dans le routine
concernée...

--
Patrice

"Annie L." a écrit dans le message de
news:
> Cela marche très bien avec le "bon" n° ligne.
>
> Vous dites : So oui copier le fichier EXE et le
>> fichier PDB à l'emplacement voulu puis lancer directement l'EXE. Le n° de
>> ligne devrait aussi s'afficher.
>
> Je ne comprends pas OÙ le copier ??? De toute façon cela marche bien! Je
> suis bien en mode "Debug" que je vois bien dans les propriétés de mon
> projet!!!
>
> Ce qui est bizarre, avec cet exemple, je vois mon n° ligne mais pas avec
> "StackTrace" !!!!!
>
> merci!
>
> "Patrice" wrote:
>
>> Donc je commencerais déjà par mettre au début de l'application qq chose
>> comme :
>> #If DEBUG Then
>>
>> MsgBox("DEBUG")
>>
>> #Else
>>
>> MsgBox("RELEASE")
>>
>> #End If
>>
>> Try
>>
>> Throw New Exception("Essai")
>>
>> Catch ex As Exception
>>
>> MsgBox(ex.ToString)
>>
>> End Try
>>
>> ce qui devrait afficher debug puis :
>>
>> System.Exception: Essai
>>
>> à <method> dans <fichier>:ligne <ligne>
>>
>>
>>
>> donc bien avec le n° de ligne.
>>
>>
>>
>> Est-ce que cela marche dans VS.NET. So oui copier le fichier EXE et le
>> fichier PDB à l'emplacement voulu puis lancer directement l'EXE. Le n° de
>> ligne devrait aussi s'afficher.
>>
>> Cela permettrait déjà de voir que tout est ok en mode DEBUG.
>>
>>
>>
>>
>>
>>
>>
>>
>> "Annie L." a écrit dans le message de
>> news:
>> > Une application Windows très simple (pas de DLL externe, ni de classes
>> > externes, ni de UserControl) vraiment très simple!
>> >
>> > Mais quel est mon problème ???
>> >
>> > Merci!
>> >
>> > "Patrice" wrote:
>> >
>> >> En mode DEBUG ca marche, c'est une appli Windows ou ASP.NET...
>> >>
>> >> --
>> >> Patrice
>> >>
>> >> "Annie L." a écrit dans le message
>> >> de
>> >> news:
>> >> > Ce que j'aimerais avant tout, pouvoir afficher le n° ligne en mode
>> >> > Debug
>> >> > !!!
>> >> >
>> >> > Dim st As StackTrace
>> >> >> >> >> >> st = New StackTrace(objException, True)
>> >> >> >> >> >>
>> >> >> >> >> >> Dim sf As StackFrame
>> >> >> >> >> >> sf = st.GetFrame(0)
>> >> >> >> >> >> sf.GetFileLineNumber()
>> >> >> >> >> >>Msgbox(sf.GetFileLineNumber()) résultat = 0 qui
>> >> >> >> >> >>devrait
>> >> >> >> >> >>être
>> >> >> >> >> >>1826
>> >> >
>> >> > Quelle erreur est-ce que je fais ????
>> >> >
>> >> > Merci!
>> >> >
>> >> >
>> >> > "Patrice" wrote:
>> >> >
>> >> >> Bonjour, je dirais :
>> >> >>
>> >> >> - soit tester dans la version de débogage sur le poste de
>> >> >> développement
>> >> >>
>> >> >> - j'avais jeté un oeil à ce point et j'avais vu aussi que les
>> >> >> lignes
>> >> >> n'étaient pas forcément fiables (le PDB ne fournira pas forcément
>> >> >> la
>> >> >> ligne
>> >> >> exacte selon les optimisations faites par le compilateur dans le
>> >> >> code
>> >> >> en
>> >> >> mode release).
>> >> >>
>> >> >> Au final je n'avais pas creusé plus avant, mon expérience étant que
>> >> >> le
>> >> >> message et la pile des appels est généralement suffisante pour
>> >> >> localiser
>> >> >> le
>> >> >> problème suffisamment facilement. Eviter les routines trop longues
>> >> >> peut
>> >> >> également aider (et est sans doute généralement une bonne
>> >> >> pratique).
>> >> >>
>> >> >> --
>> >> >> Patrice
>> >> >>
>> >> >> "Annie L." a écrit dans le
>> >> >> message
>> >> >> de
>> >> >> news:
>> >> >> > Vous dites : Vous devez choisir dans "Générer les infos de
>> >> >> > débogage"
>> >> >> > :
>> >> >> > "pdb-only".
>> >> >> > présentement, le choix dans cette liste est "Full" est-ce correct
>> >> >> > ou
>> >> >> > dois-je
>> >> >> > choisir "pdb-only". ?
>> >> >> > Vous dites aussi : dans le répertoire "Debug" est-ce là :
>> >> >> > Dans mes options de mon projet, option "Compiler", "Chemin de
>> >> >> > sortie
>> >> >> > de
>> >> >> > la
>> >> >> > génération = binx86Debug si oui, dans ce répertoire j'ai un
>> >> >> > fichier
>> >> >> > nommé <nomDeMonProjet>.pdb (pour avoir le n° ligne lors d'une
>> >> >> > erreur)
>> >> >> > car
>> >> >> > cela ne fonctionne pas du tout, il me donne toujours la ligne
>> >> >> > zéro
>> >> >> > (0).
>> >> >> >
>> >> >> > Autre chose, vous dites : Pensez dans ce cas à ne pas afficher de
>> >> >> > message
>> >> >> > d'exception à l'écran... Que voulez-vous dire par là ?
>> >> >> > exemple...!
>> >> >> > J'ai une gestion d'erreur qui affiche le nom de mon formulaire,
>> >> >> > le
>> >> >> > nom
>> >> >> > de
>> >> >> > la
>> >> >> > procédure/fonction le n° de ligne et le message d'erreur générer
>> >> >> > par
>> >> >> > "Exception"
>> >> >> >
>> >> >> > je commence plus à comprendre, cela va être plus simple que je le
>> >> >> > pensais!
>> >> >> >
>> >> >> > Merci!
>> >> >> >
>> >> >> >
>> >> >> > "Gilles TOURREAU [MVP]" wrote:
>> >> >> >
>> >> >> >> "Annie L." a écrit dans le
>> >> >> >> message
>> >> >> >> de
>> >> >> >> news:
>> >> >> >> > Là vous me perdez!
>> >> >> >> > Où vérifier ces fichiers?
>> >> >> >> > Un gros manque de connaissance de ma part !!!!
>> >> >> >> > Veuillez m'excusez!
>> >> >> >> > Expliquez-moi S.V.P.
>> >> >> >> >
>> >> >> >> > Merci!
>> >> >> >> >
>> >> >> >> > "Gilles TOURREAU [MVP]" wrote:
>> >> >> >> >
>> >> >> >> >> "Annie L." a écrit dans le
>> >> >> >> >> message
>> >> >> >> >> de
>> >> >> >> >> news:
>> >> >> >> >> > Il y a quelquechose que je ne comprends pas!
>> >> >> >> >> > J'ai mis ce code dans un "Catch objException As Exception"
>> >> >> >> >> > et
>> >> >> >> >> > il
>> >> >> >> >> > me
>> >> >> >> >> > donne
>> >> >> >> >> > comme erreur la ligne 0 !!!
>> >> >> >> >> > Ai-je oublié quelquechose ????
>> >> >> >> >> >
>> >> >> >> >> >>Dim st As StackTrace
>> >> >> >> >> >> st = New StackTrace(objException, True)
>> >> >> >> >> >>
>> >> >> >> >> >> Dim sf As StackFrame
>> >> >> >> >> >> sf = st.GetFrame(0)
>> >> >> >> >> >> sf.GetFileLineNumber()
>> >> >> >> >> >>Msgbox(sf.GetFileLineNumber()) résultat = 0 qui
>> >> >> >> >> >>devrait
>> >> >> >> >> >>être
>> >> >> >> >> >>1826
>> >> >> >> >> >
>> >> >> >> >> > Merci!
>> >> >> >> >> >
>> >> >> >> >> > "Gilles TOURREAU [MVP]" wrote:
>> >> >> >> >> >
>> >> >> >> >> >> "Annie L." a écrit dans
>> >> >> >> >> >> le
>> >> >> >> >> >> message
>> >> >> >> >> >> de
>> >> >> >> >> >> news:
>> >> >> >> >> >> > Bonjour!
>> >> >> >> >> >> > Pas évident! C'était beaucoup plus simple en VB 2003!
>> >> >> >> >> >> >
>> >> >> >> >> >> > Il me donne une erreur dans "InstanceException" :
>> >> >> >> >> >> > st = new StackTrace(InstanceException, true);
>> >> >> >> >> >> >
>> >> >> >> >> >> > Vous avez écrit ce code en C# ?
>> >> >> >> >> >> >
>> >> >> >> >> >> > Vous dites : NB : Il faut que les .pdb soient livrés
>> >> >> >> >> >> > avec
>> >> >> >> >> >> > votre
>> >> >> >> >> >> > exécutable...
>> >> >> >> >> >> >
>> >> >> >> >> >> > Qu'est ce qu'un ".pdb"? À quoi sert cette extension?
>> >> >> >> >> >> > Est-ce que nous pourrons avoir la ligne de l'erreur
>> >> >> >> >> >> > lorsque
>> >> >> >> >> >> > j'aurai
>> >> >> >> >> >> > créé
>> >> >> >> >> >> > un
>> >> >> >> >> >> > exécutable en mode "Release" ???
>> >> >> >> >> >> > Ce qui n'était pas possible avant! Mais cela serait
>> >> >> >> >> >> > vraiment
>> >> >> >> >> >> > super
>> >> >> >> >> >> > !!!
>> >> >> >> >> >> >
>> >> >> >> >> >> > Merci de votre aide!


1 2