IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Lazarus Pascal Discussion :

[Lazarus][Débutant] External error SIGSEGV


Sujet :

Lazarus Pascal

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7
    Points : 1
    Points
    1
    Par défaut [Lazarus][Débutant] External error SIGSEGV
    Bonjour à tous.

    Je rencontre actuellement un problème que je n'arrive pas à résoudre.
    Pour des cours d'informatique, je dois utiliser Lazarus. Installé sur mon pc de bureau, il tourne sans problème (que ce soit la 9.18 ou la 9.20). Toutefois, installé sur mon Pc portable (pourtant plus puissant/récent que l'autre), mes programmes se compilent mais à l'exécution je rencontre une "external error SIGSEGV". Et ce quel que soit le programme. Sur mon pc de bureau ce même programme fonctionne sans soucis. J'ai réinstallé plusieurs fois Lazarus, spécifié les mêmes répertoires que sur mon pc de bureau... mais rien à faire. Je rencontre ce problème quelle que soit la version installée.

    Après pas mal de recherches, impossible de trouver une réponse. Est-ce matériel ? Je me tourne vers vous.

    Merci d'avance.

    Cordialement, Ludo

  2. #2
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7
    Points : 1
    Points
    1
    Par défaut
    PS : Je tourne sous Win XP Home SP2 sur les 2 pc.

  3. #3
    Responsable Pascal, Lazarus et Assembleur


    Avatar de Alcatîz
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Mars 2003
    Messages
    7 937
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2003
    Messages : 7 937
    Points : 59 416
    Points
    59 416
    Billets dans le blog
    2
    Par défaut
    Bonjour et bienvenue !

    Il s'agit probablement d'une "segmentation fault" dans une dll externe.
    As-tu essayé de faire tourner tes programmes avec un debugger ?
    Règles du forum
    Cours et tutoriels Pascal, Delphi, Lazarus et Assembleur
    Avant de poser une question, consultez les FAQ Pascal, Delphi, Lazarus et Assembleur
    Mes tutoriels et sources Pascal

    Le problème en ce bas monde est que les imbéciles sont sûrs d'eux et fiers comme des coqs de basse cour, alors que les gens intelligents sont emplis de doute. [Bertrand Russell]
    La tolérance atteindra un tel niveau que les personnes intelligentes seront interdites de toute réflexion afin de ne pas offenser les imbéciles. [Fiodor Mikhaïlovitch Dostoïevski]

  4. #4
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7
    Points : 1
    Points
    1
    Par défaut
    comment faire ?
    Je n'ai aucune notion, désolé.

    Cordialement, merci

  5. #5
    Rédacteur/Modérateur
    Avatar de M.Dlb
    Inscrit en
    Avril 2002
    Messages
    2 464
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Avril 2002
    Messages : 2 464
    Points : 4 311
    Points
    4 311
    Par défaut
    Ce n'est certainement pas matériel, mais windowsien Comme l'a magnifiquement dit Alcatîz, peut-être une DLL externe...
    M.Dlb - Modérateur z/OS - Rédacteur et Modérateur Pascal

  6. #6
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7
    Points : 1
    Points
    1
    Par défaut
    Arf !

    Comment rédoudre ça ? si c'est une dll qui manque, comment savoir laquelle ? Je ne vais pas réinstaller windows juste pour lazarus tout de même !! Surtout que le pc n'a meme pas 3 semaines ...

    Cordialement, Ludo

  7. #7
    Membre éclairé

    Inscrit en
    Avril 2003
    Messages
    284
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 284
    Points : 773
    Points
    773
    Par défaut
    Bonjour,

    Ma question va paraître saugrenue mais ne l'est pas tant que celà
    quand tu dis que ton programme a un problème à l'execution, tu veux dire :
    -Qu'il affiche l'erreur juste après la compilation en ayant été lancé à travers lazarus (par f9 ou le triangle vert).
    - Ou bien que le programme plante même en le lançant manuellement en double cliquant sur son icone dans une fenetre de l'explorateur windows?

    Je t'explique le pourquoi de cette question...

    Si ton programme se lance dans le cas N° 2, alors je pense avoir la solution...
    En fait il semble que sur certains pc, le debugger livré avec lazarus crée cette erreur. Quand celà arrive, on est obligé d'utiliser le menu executer >> réinitialiser le debuggueur pour pouvoir lancer correctement l'executable généré...
    Celà m'était arrivé avec un autre pc et une version plus ancienne de Lazarus mais ne m'est plus arrivé depuis.
    J'avais desactivé le debuggueur à l'époque dans configuration >> options du debuggueur >> type de debuggueur >>> none au lieu de gnu debugger

    Celà avait résolu le problème...

    Bonne programmation

  8. #8
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7
    Points : 1
    Points
    1
    Par défaut
    Tout d'abord, Merci de votre aide.

    J'ai essayé votre solution en effet, le problème semble venir du debogueur. Le programme se lance à partir de l'application mais dans lazarus j'ai le problème vu precedamment.
    J'ai donc désactivé le debogueur et je n'ai plus le message d'erreur SIGSEGV mais le progrmma essaie de se lancer puis une fenetre me met "execution intérompu..".

    On avance ...

    Cordialement, Ludovic

  9. #9
    Membre éclairé

    Inscrit en
    Avril 2003
    Messages
    284
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 284
    Points : 773
    Points
    773
    Par défaut
    Il va falloir peut-etre que l'on puisse voir le-dit programme, dans ce cas

  10. #10
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7
    Points : 1
    Points
    1
    Par défaut
    Quelque soit le programme, il fonctionne très bien sur mon autre pc.

    Cordialement, ludo

  11. #11
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7
    Points : 1
    Points
    1
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    program test;
     
    var x:string[2];
     
    begin
         writeln('ecrivez une lettre');
         readln(x);
         writeln(x);
         readln;
    end.
    voici un exemple tout simple qui fonctionne sur un pc mais pas sur l'autre

    Cordialement, ludo

  12. #12
    Membre éclairé

    Inscrit en
    Avril 2003
    Messages
    284
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 284
    Points : 773
    Points
    773
    Par défaut
    Bon, prenons les choses au départ :

    1) Lazarus doit etre installé et travailler dans des repertoires aux noms courts et sans espace...

    donc pas qestion d'utiliser "program files" ou "mes documents" ou le bureau pour l'installer, ni pour y compiler des sources si on ne veut pas d'ennui!

    Il vaut mieux laisser lazarus dans c:\lazarus et compiler ses projets dans un dossier lui aussi au chemin court et près de la racine du disque: par exemple c:\test , en évitant les noms de dossier avec des espaces ou des caractères avec des accent du genre:
    c:\Mon super projet compilé à 3 heures du matin le 24 octobre\

    Soyez compatible avec un compilateur msdos ! pas d'espace, pas de caractères spéciaux et des noms de - de 8 caractères sont de bonnes habitudes à prendre (pour les nouveaux) et déjà acquises pour les anciens.

    2) Lazarus ne gère pas des fichiers sources uniques mais des projets :
    N'essayez pas d'ouvrir un fichier avec l'extension.pas pour le compiler.
    Vous etes sensé ouvrir un fichier avec l'extension.lpi, faute de quoi Lazarus ouvre le nouveau fichier et l'ajoute au projet en cours...
    dans le cas du code source qui est proposé ici, la bonne methode pour le tester est:
    Ouvrir lazarus, Creer un projet neuf avec
    projet >> nouveau projet >> programme personalisé
    L'enregistrer
    projet >> enregistrer le projet
    Dans un répertoire au chemin court!!! et surement pas sur le bureau ou dans "mes documents".
    je choisis c:\TestLaz et je change le nom du projet en test1.lpi

    mon programme ressemble alors à celà :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    program test1;
     
    {$mode objfpc}{$H+}
     
    uses
      Classes, SysUtils
      { add your units here };
     
    begin
    end.
    Puis je copie/ colle depuis le forum la partie de source après la première ligne (puisque mon projet n'a pas le meme nom )

    ce qui donne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    program test1;
     
    var x:string[2];
     
    begin
         writeln('ecrivez une lettre');
         readln(x);
         writeln(x);
         readln;
    end.
    Je peux enregistrer mon projet modifié et lancer la compilation qui doit fonctionner si toutes Ces étapes ont été correctement remplies. Le programme bugguera si je rentre autre chose que ce qui est attendu mais c'est une autre histoire...

    3) distribution de mon projet pour utilisation sur un autre PC
    le répertoire testlaz contient après compilation :

    <REP> backup
    test1.compiled
    test1.exe
    test1.lpi
    test1.o
    test1.pas
    Le répertoire backup content, comme son nom l'indique, une sauvegarde de votre projet.

    le fichier test1.compiled est un fichier au format xml indiquant les lignes de commandes envoyées au compilateur par lazarus.
    on peut y lire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <?xml version="1.0"?>
    <CONFIG>
      <Compiler Value="c:\lazarus2\fpc\2.0.4\bin\i386-win32\fpc.exe" Date="895835052"/>
      <Params Value=" -S2cgi -OG1 -gl -vewnhi -l -Fu. -otest1.exe test1.pas"/>
    </CONFIG>
    le fichier test1.exe est le programme compilé

    Le fichier test1.o est une version précompilée de votre programme avant passage par le linker, (l'equivalent des dcu de delphi). cest un fichier intermédiaire pendant la compilation.


    Il nous reste les deux fichiers principaux qu'il faut distribuer :


    test1.lpi est un fichier au format xml.
    Il contient diverses informations, lisibles, notement les noms (et eventuellement chemins) des units, des fichiers inc etc...
    Par défaut ce fichier doit contenir des chemins relatifs et permettre de re-compiler le projet à partir d'ailleur.
    Une vérification dans un editeur de texte peut permettre de se rendre compte des eventuels chemins erronés et de corriger les erreurs.

    Test1. pas est le fichier source que l'on a créé dans lazarus.

    Distribuer son application signifie distribuer le fichier avec l'extension lpi ainsi que les fichier associés.


    4) ouvrir un projet provenant d'un autre ordinateur :

    Placez (dézippez) l'ensemble des fichiers dans un dossier près de la racine du disque dur et avec un nom court.
    Ouvrez le fichier .lpi
    Compilez...
    Vous pouvez, en cas de problème editer le fichier lpi à la main (lazarus étant fermé) si ce dernier indique des chemins faux ou pointe vers des unités manquantes.


    Si toutes ces conditions sont remplies dans les règles de l'art, installation du programme, Création et enregistrement du projet, expoort du projet, import du projet.... Il n'y a pas de raison d'avoir une erreur sur le deuxième PC....

    Bonne programmation

    Clandestino

Discussions similaires

  1. error LNK2019: unresolved external symbol
    Par ilimo dans le forum C++
    Réponses: 22
    Dernier message: 09/04/2006, 23h59
  2. error LNK2019: unresolved external symbol
    Par soniona dans le forum Autres éditeurs
    Réponses: 2
    Dernier message: 06/04/2006, 14h03
  3. [Lazarus] Exécution de commande externe
    Par SaintShakaJin dans le forum Lazarus
    Réponses: 3
    Dernier message: 26/04/2005, 13h13
  4. Error loading external library
    Par sandrinec dans le forum Oracle
    Réponses: 5
    Dernier message: 16/12/2004, 18h41
  5. Réponses: 4
    Dernier message: 23/04/2004, 16h06

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo