Forum |  HardWare.fr | News | Articles | PC | Prix | S'identifier | S'inscrire | Aide | Shop Recherche
1859 connectés 

  FORUM HardWare.fr
  Programmation
  Python

  PYTHON plantage non repérable en mode debug

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

PYTHON plantage non repérable en mode debug

n°2347140
erwan83
Du Shift DEL tu te méfieras !
Posté le 04-03-2020 à 22:04:01  profilanswer
 

Bonjour.
 
Je traite des données issues d'internet et je les injecte dans une BDD Postgres via B.S. et une commande SQL
J'ai parfois quelques erreurs qui entrainent des bugs lors du INSERT INTO... mais j'ai mis un except qui m'affiche ERREUR
 
Le problème => Quand je lance mon programme .PY en mode console, il arrive régulièrement qu'il plante et là, pas le temps de voir d'erreur...
J'ai donc mis un peu partout des TRY/EXCEPT pour récupérer une erreur et là j'ai relancé en mode debug.
Depuis que je tourne en mode debug, je n'ai pas la moindre erreur affichée.
 
Pourquoi ça peut planter en mode console sans retourner le moindre code d'erreur en mode debug ?
 
==> Question ==> Existe-t-il un super "TRY EXCEPT" qui me permettrait de générer un code d'erreur ??
 
Merci


Message édité par erwan83 le 05-03-2020 à 13:13:15

---------------
http://www.stand by.com (lol)
mood
Publicité
Posté le 04-03-2020 à 22:04:01  profilanswer
 

n°2347442
xilebo
noone
Posté le 10-03-2020 à 13:05:39  profilanswer
 

avec eclipse + pydev tu peux debugguer avec des points d'arrêts.
 
Si ton programme ne plante pas en debug alors qu'en exécution il plante, tu es face à un bug aléatoire type heisenbug ( https://fr.wikipedia.org/wiki/Bug_logiciel_inhabituel  ). L'observation enlève le bug, c'est assez difficile à corriger.
 
Il faudrait que tu postes un peu de code pour voir d'un peu plus près, et que tu regardes chaque appel se trouvant entre ton try et ton except , pour savoir quel type d'exception peut être levé pour chaque fonction. Tu interceptes explicitement chaque exception et tu loggues les infos.
 
Il serait bien déjà d'identifier quelle fonction fait planter, ça peut t'orienter un peu.

n°2347619
erwan83
Du Shift DEL tu te méfieras !
Posté le 11-03-2020 à 18:23:24  profilanswer
 

merci beaucoup à toi
zut j'ai désinstallé Eclipse.


Message édité par erwan83 le 11-03-2020 à 18:43:37

---------------
http://www.stand by.com (lol)
n°2347621
erwan83
Du Shift DEL tu te méfieras !
Posté le 11-03-2020 à 18:42:28  profilanswer
 

Voila un bout de code si ça peut aider.

Code :
  1. for ADRESSE in inp.readlines():
  2.     cpta=cpta+1
  3.     ADRESSE=ADRESSE.replace("\n","" ).replace("\r","" )
  4.     wr=open("\test5.txt","w" )
  5.     wr.write(ADRESSE)
  6.     wr.close()
  7.    
  8.     zz=datetime.now()
  9.     EXTENSION = "EXTSN"
  10.     ligne = "%s%s%s" % ("DELETE FROM ALL_KNOWN_URL WHERE URL LIKE '" , ADRESSE , "';" )
  11.     try:
  12.         cursor.execute(ligne)
  13.     except:
  14.         print"ERREUR 001"
  15.         print ligne
  16.     else:
  17.         ON_OFF_INSERER_NOUVEAU_ADRESSE=1
  18.         if SOME FUCKING VERIF....
  19.             ON_OFF_INSERER_NOUVEAU_ADRESSE=0
  20.     if ON_OFF_INSERER_NOUVEAU_ADRESSE==1:
  21.         ligne = "%s%s%s%s%s%s%s" % ("INSERT INTO ALL_KNOWN_URL (URL,TYPEOF,DATE) VALUES('" , ADRESSE , "','" , EXTENSION , "','" , datetime.now() , "') ON CONFLICT DO NOTHING;" )
  22.         try:
  23.             cursor.execute(ligne)
  24.         except:
  25.             print"ERREUR 002"
  26.             print ligne
  27.            
  28.     if ON_OFF_INSERER_NOUVEAU_ADRESSE==1:      ######
  29.        
  30.         user_agent = 'SOME DAMNED BROWSER'
  31.         headers = { 'User-Agent' : user_agent }
  32.         socket.setdefaulttimeout(20)
  33.         req = urllib2.Request(ADRESSE, None, headers)
  34.         #req.add_header('Referer', 'http://www.xxxxxx.fr/')
  35.         try:
  36.             response = urllib2.urlopen(req)
  37.         except:
  38.             print "ERREUR 003"
  39.         else:
  40.             TXTWEB=''
  41.             if response:
  42.                 try:
  43.                     TXTWEB = response.read()
  44.                 except:
  45.                     print "ERREUR 004"
  46.                 try:
  47.                     soup = BeautifulSoup(TXTWEB, "html.parser" )
  48.                 except:
  49.                     print "ERREUR BFS"
  50.                 else:
  51.                     links = []
  52.                 print "****** RECHERCHE LIENS"
  53.                 print cpta,
  54.                 print "ADRESSES SCANNEES"
  55.                 links = []
  56.                 for link in soup.findAll('a', attrs={'href': re.compile("^http://" )}):
  57.                     links.append(link.get('href'))
  58.                 for link2 in soup.findAll('a', attrs={'href': re.compile("^https://" )}):
  59.                     links.append(link2.get('href'))
  60.                 #print(links)
  61.                 for aa in range (0,len(links),1):
  62.                     table = 'LINKS_FIRST_RANK'
  63.                    
  64.                     ON_OFF_INSERER_LIEN=1
  65.                     if SOME FUCKING VERIF 2....
  66.                         table = 'LINKS_FIRST_RANK_XXX'
  67.                        
  68.                     if SOME FUCKING VERIF 3....
  69.                         ON_OFF_INSERER_LIEN=0
  70.                     if ON_OFF_INSERER_LIEN==1:
  71.                         print "ok",
  72.                         ligne = "%s%s%s%s%s%s%s%s%s" % ("INSERT INTO ", table , " (URL,TYPEOF,DATE) VALUES('" , links[aa] , "','" , EXTENSION , "','" , datetime.now() , "') ON CONFLICT DO NOTHING;" )
  73.                         try:
  74.                             cursor.execute(ligne)
  75.                         except:
  76.                             print"ERREUR 006"
  77.                             print ligne
  78.                         table = 'ALL_KNOWN_URL'
  79.                         ligne = "%s%s%s%s%s%s%s%s%s" % ("INSERT INTO ", table , " (URL,TYPEOF,DATE) VALUES('" , links[aa] , "','" , EXTENSION , "','" , datetime.now() , "') ON CONFLICT DO NOTHING;" )
  80.                         try:
  81.                             cursor.execute(ligne)
  82.                         except:
  83.                             print"ERREUR 008"
  84.                             print ligne
  85.                 cursor.execute("SELECT COUNT(URL) FROM LINKS_FIRST_RANK;" )
  86.                 rows = cursor.fetchall()
  87.                 for row in rows:
  88.                     print('{0}'.format(row[0]))
  89. cursor.close()
  90. conn.close()


---------------
http://www.stand by.com (lol)
n°2348186
erwan83
Du Shift DEL tu te méfieras !
Posté le 16-03-2020 à 09:17:37  profilanswer
 

Code :
  1. try:
  2.                                 print ligne
  3.                             except:
  4.                                 print "errrrrrrrrrrr"


Mooooooooooooooort de rire
La ligne que j'imprime comprend peut-être des caractères qui font planter la console parce que, en mode debug, elle s'affiche.
Par contre, en mode console, maintenant que j'ai mis ce code, ça marche !!


---------------
http://www.stand by.com (lol)

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Python

  PYTHON plantage non repérable en mode debug

 

Sujets relatifs
plantage navigation drawerDemander une valeur immédiatement sur python
Apprendre le pythonPython Request et Android HttpURLConnection équivalent
Python sous AbaqusJeu carte bataille python
[Python] Exercice nombre premiers et fonction seuil[Python] Erreur de Syntaxe try:
Bloqué exercice cours Python[FORTRAN] Problème objet/debug
Plus de sujets relatifs à : PYTHON plantage non repérable en mode debug


Copyright © 1997-2018 Hardware.fr SARL (Signaler un contenu illicite) / Groupe LDLC / Shop HFR