2010-07-08 19 views
1

Je suis toujours vert à déboguer F77 et j'ai quelques problèmes avec les limites de tableau. J'ai récemment modifié un long code pour avoir de nouvelles tailles de tableau. Tout semblait aller bien jusqu'à ce que je remarque des méthodes pour modifier un tableau, en changer un autre. Quelque part dans ce code, je suppose, une affectation est hors limites et écrit aux autres tableaux.Débogueur Fortran 77 pour vérifier les limites d'un tableau

Existe-t-il un débogueur/outil dans l'environnement Linux qui «attrape» l'exception hors limites?

J'utilise actuellement gfortran

Répondre

2

Il y a un drapeau pour gfortran d'insérer des contrôles hors limites pour

-fbounds-vérifier Activer la génération des contrôles d'exécution pour le tableau et contre l'indices déclaré valeurs minimales et maximales. Il vérifie également les indices de tableau pour les tableaux de formes différées supposées et par rapport aux bornes réelles attribuées. Dans le futur cela peut également inclure d'autres formes de contrôle , par exemple. vérification des sous-chaînes références.

http://linux.die.net/man/1/gfortran

La sortie est comme vous le souhaitez:

At line 2153 of file src/cdtm0402.f 
Fortran runtime error: Array reference out of bounds for array 'wv1mp', upper bound of dimension 1 exceeded (78 > 77) 

Backtrace for this error: 
    + function coefdp (0x448BC3) 
    at line 2153 of file cdtm0402.f 
    + in the main program 
    at line 371 of file cdtm0402.f 
    + /lib64/libc.so.6(__libc_start_main+0xfd) [0x7ffff703da7d] 
1

Si cela est à un employeur, vous pouvez les avoir acheter une licence pour « silex » - il est comme « peluches » C, mais pour Fortran.

De même, gdb/dbx/ddd ne fait-il pas de débogage fortran? Oh, il faut parfois activer des drapeaux spéciaux dans f77 pour conserver les chaînes et les informations de débogage dans les exécutables et les fichiers objets, un peu comme "cc -g".

+0

cadre universitaire ... Peut-gdb/dbx/ddd faire cela? Je ne suis pas un pro à ces derniers. – ccook

+0

J'ai essayé l'indicateur -g sur le compilateur. A aidé un groupe, mais pas sur les limites du tableau, malheureusement. – ccook

+0

Je pourrais jurer que les débogueurs standard permettent de travailler sur des choses fortran. Ce sont toujours des objets C++ qui ont brouillé les choses à mon ancien travail où C et Fortran étaient mélangés. Notez également que f77 peut avoir des exigences de compilateur pour les symboles de débogage. – eruciform