ฉันได้แก้ไขโค้ดต่อไปนี้ใน Cygwin และ Eclipse โดยใช้ gdb เป็นตัวดีบักเกอร์:
program codetest
implicit none
integer, parameter :: dp = kind(1.0d0)
integer, parameter :: N = 10
real(dp), dimension(:), allocatable :: vector
integer :: i
allocate(vector(1:N))
forall(i = 1:10)
vector(i) = sqrt(real(i, dp))
end forall
write(*, '(F7.3, 1X)', advance = 'no') (vector(i), i = 1, N)
deallocate(vector)
end program codetest
เมื่อรัน gdb ฉันพยายามพิมพ์อาร์เรย์ "เวกเตอร์" ที่จัดสรรได้หลังจากการจัดสรร แต่ฉันได้สิ่งต่อไปนี้:
(gdb) p vector
Unhandled dwarf expression opcode 0x97
ฉันได้ค้นหา Stack Overflow และ Google แล้ว แต่ฉันไม่พบสิ่งใดที่เป็นหัวใจสำคัญของเรื่องนี้ ฉันได้ตรวจสอบสิ่งต่อไปนี้แล้ว
- http://numericalnoob.blogspot.be/2012/08/fortran-allocatable-arrays-and-pointers.html
- การแสดงออกของคนแคระที่ไม่สามารถจัดการได้
- อาร์เรย์ที่สามารถจัดสรรการพิมพ์ Fortran ใน gdb
แต่ฉันยังไม่เข้าใจว่าปัญหาคืออะไรหรือจะแก้ไขได้อย่างไร ฉันได้รับการร้องเรียนเดียวกันจาก gdb ใน Eclipse (Mars.1 Release, 4.5.1) เมื่อพยายามพิมพ์/แสดงเนื้อหาของประเภทที่ได้รับ ข้อมูลจำเพาะปัจจุบันเกี่ยวกับเครื่อง/คอมไพเลอร์/ดีบักเกอร์ของฉันมีดังต่อไปนี้:
- วินโดวส์ 8.1
- เวอร์ชัน gfortran: GNU Fortran (GCC) 4.9.3
- เวอร์ชัน gdb: GNU gdb (GDB) 7.8
ความช่วยเหลือใด ๆ ที่ชื่นชม