Main
On alors la main, et on peut demander la valeur de @@i@@ ou n'importe quelle variable locale.
Main.TutoPythonDebug History
Hide minor edits - Show changes to output
Changed lines 36-85 from:
to:
On alors la main, et on peut demander la valeur de @@i@@ ou n'importe quelle variable locale.
!!!%part% Equivalent python de @@dbstop if error@@
Malheureusement, c'est plus dur en python...
(:source lang=python:)
import pdb, traceback, sys
import numpy as np
def maMethode(v):
for i in range(10):
print("Hello ",v[i])
print("Finished ") # passage impossible vue la taille de v...
def bombs():
maMethode(np.arange(8))
if __name__ == '__main__':
try:
bombs()
except:
type, value, tb = sys.exc_info()
traceback.print_exc()
pdb.post_mortem(tb)
(:sourceend:)
le programme plante et rend la main, '''mais il rend la main DANS la fonction qui a planté'''
Hello 0
Hello 1
Hello 2
Hello 3
Hello 4
Hello 5
Hello 6
Hello 7
> <ipython-input-2-02f871063e4c>(7)maMethode()
-> print("Hello ",v[i])
(Pdb) >? i
8
(Pdb)
>?
Nous avons accès à @@i@@
!!!%part% Equivalent python de @@dbstop if error@@
Malheureusement, c'est plus dur en python...
(:source lang=python:)
import pdb, traceback, sys
import numpy as np
def maMethode(v):
for i in range(10):
print("Hello ",v[i])
print("Finished ") # passage impossible vue la taille de v...
def bombs():
maMethode(np.arange(8))
if __name__ == '__main__':
try:
bombs()
except:
type, value, tb = sys.exc_info()
traceback.print_exc()
pdb.post_mortem(tb)
(:sourceend:)
le programme plante et rend la main, '''mais il rend la main DANS la fonction qui a planté'''
Hello 0
Hello 1
Hello 2
Hello 3
Hello 4
Hello 5
Hello 6
Hello 7
> <ipython-input-2-02f871063e4c>(7)maMethode()
-> print("Hello ",v[i])
(Pdb) >? i
8
(Pdb)
>?
Nous avons accès à @@i@@
Added lines 1-36:
%define=part apply=block bgcolor=#e6d8c0%
%define=exo apply=block bgcolor=#ffbbbb%
!![[Main.TutoPython|Retour vers le tutoriel complet]]
Nous utilisons python comme un langage de script... De fait, nous avons la main sur l'espace des variables en fin d'exécution et le debugage est plutôt aisé...
La question générale est: comment reprendre la main au milieu d'une méthode?
!!!%part% Debug avec un point d'arret
Le but de cette section est de rendre la main, temporairement, à l'utilisateur au milieu d'une méthode.
(:source lang=python:)
import pdb
def maMethode(v):
for i in range(10):
if(i==3):
pdb.set_trace()
print("Hello ",v[i])
maMethode(np.arange(12))
(:sourceend:)
Permet d'obtenir le comportement suivant:
Hello 0
Hello 1
Hello 2
> <ipython-input-8-d0ad2c83c5f3>(7)maMethode()
-> print("Hello ",v[i])
(Pdb)
>?
On alors la main, et on peut demander la valeur de @@i@@ ou n'importe quelle variable locale.
%define=exo apply=block bgcolor=#ffbbbb%
!![[Main.TutoPython|Retour vers le tutoriel complet]]
Nous utilisons python comme un langage de script... De fait, nous avons la main sur l'espace des variables en fin d'exécution et le debugage est plutôt aisé...
La question générale est: comment reprendre la main au milieu d'une méthode?
!!!%part% Debug avec un point d'arret
Le but de cette section est de rendre la main, temporairement, à l'utilisateur au milieu d'une méthode.
(:source lang=python:)
import pdb
def maMethode(v):
for i in range(10):
if(i==3):
pdb.set_trace()
print("Hello ",v[i])
maMethode(np.arange(12))
(:sourceend:)
Permet d'obtenir le comportement suivant:
Hello 0
Hello 1
Hello 2
> <ipython-input-8-d0ad2c83c5f3>(7)maMethode()
-> print("Hello ",v[i])
(Pdb)
>?
On alors la main, et on peut demander la valeur de @@i@@ ou n'importe quelle variable locale.