2012-11-26 7 views
6

Mam pytanie dotyczące debugowania pliku Fortran. Tak więc zadeklarowałem go z d (*) automatycznie. Jednak podczas debugowania i nadzoru tablicy wyświetla ona tylko pierwszą liczbę odpowiednich tablic, a nie 60 innych. (Używam kompilatora Fortran 95 i Visual Studio 2010)Automatyczna długość macierzy w debugowaniu Fortran i Visual Studio

Jak mogę wyświetlić wszystkie zmienne tablicy?


Dobrze tutaj jest jeden przykład kodu:

IA jest zmienną całkowitą od głównej procedury, w zależności od wybranych parametrów wejściowych.

subroutine abc(ia,a,b,c) 
dimension d(*) 

a = d(ia+1) 
b = d(ia+2) 
c = d(ia+3) 

return 
end 

Jednak do debugowania warto znać endities D (*)

+0

Nie rozumiem, co naprawdę zrobiłeś, tylko zgaduję. Pokaż nam jakiś kod. Zauważ, że (*), tak zwane założone tablice wielkości nie określają automatycznie wielkości tablicy w żaden sposób. –

+0

Nie musisz umieszczać podpisu w swoim poście - Twoja karta użytkownika zostanie dodana automatycznie. Przeczytaj [FAQ] (http://stackoverflow.com/faq#signatures), aby uzyskać więcej szczegółów. – Artemix

+0

Ponieważ musisz w jakiś sposób podać rozmiar tablicy (np. W dodatkowym argumencie), możesz użyć regulowanych tablic. Zamiast 'REAL d (*)' użyj 'REAL d (nsize)' gdzie 'nsize' jest argumentem' INTEGER', w którym podajesz prawdziwy rozmiar 'd' w liczbie elementów (" REAL "tutaj jest po prostu przykładowy typ danych). Następnie debugger powinien być w stanie pokazać zawartość całej tablicy. –

Odpowiedz

1

Jedynym sposobem znalazłem to zrobić, aby użyć okna Watch i dodać zegarek dla elementów tablicy . Załóżmy, że tablica jest nazywany d, potem odkryłem, że oglądanie następujących wyrażeń pokazuje wartości w tablicy:

d(2)  ! which just shows the 2nd element in the array 
d(1:10) ! which shows the first 10 elements of the array 
d(1:12:2) ! which shows the odd numbered elements of the array from 1 to 11 

I oczywiście, dla tablicy o długości 60, takich jak sugerujesz masz, wtedy wyrażenie

d(61) 

pokaże Ci, jaka wartość znajduje się w pamięci, do której wskazuje adres tablicy.

Oczywiście, powinieneś naprawdę zadeklarować swoją tablicę jako d(:). Jeśli tak, to debugger VS pokazuje całą tablicę w zwykłym oknie Locals.

+0

Automatyczne tablice są tablicami lokalnymi, a nie sztucznymi argumentami. –

+0

Punkt wzięty, Vladimir. –

+0

W przeciwnym razie +1, założone tablice kształtów będą lepsze, ponieważ podprogram zna rozmiar tablicy. OP nie pokazywał żadnego kodu, więc można się tylko domyślać, że mówi o argumentach proceduralnych. –

Powiązane problemy