การพิมพ์อาร์เรย์ที่จัดสรรได้ใน Fortran ด้วย gdb: opcode นิพจน์แคระที่ไม่สามารถจัดการได้ 0x97 [ซ้ำกัน]

ฉันได้แก้ไขโค้ดต่อไปนี้ใน 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 แล้ว แต่ฉันไม่พบสิ่งใดที่เป็นหัวใจสำคัญของเรื่องนี้ ฉันได้ตรวจสอบสิ่งต่อไปนี้แล้ว

แต่ฉันยังไม่เข้าใจว่าปัญหาคืออะไรหรือจะแก้ไขได้อย่างไร ฉันได้รับการร้องเรียนเดียวกันจาก gdb ใน Eclipse (Mars.1 Release, 4.5.1) เมื่อพยายามพิมพ์/แสดงเนื้อหาของประเภทที่ได้รับ ข้อมูลจำเพาะปัจจุบันเกี่ยวกับเครื่อง/คอมไพเลอร์/ดีบักเกอร์ของฉันมีดังต่อไปนี้:

  • วินโดวส์ 8.1
  • เวอร์ชัน gfortran: GNU Fortran (GCC) 4.9.3
  • เวอร์ชัน gdb: GNU gdb (GDB) 7.8

ความช่วยเหลือใด ๆ ที่ชื่นชม


person B. Quanah Parker    schedule 18.11.2015    source แหล่งที่มา
comment
นี่เป็นเพียงการซ้ำซ้อน! คำตอบที่คุณเชื่อมโยงระบุไว้อย่างชัดเจนว่าคุณต้องการ gdb สาขาอื่นซึ่งรวม pach จากสาขา Archer เวอร์ชัน gdb ของคุณไม่มีความสามารถ คุณต้องการทราบอะไรเพิ่มเติม?   -  person Vladimir F    schedule 18.11.2015
comment
stackoverflow.com/questions/16447741/ stackoverflow.com/questions/11656030/   -  person Vladimir F    schedule 18.11.2015
comment
ขอบคุณวลาดิมีร์ ฉันอัปเดตเวอร์ชัน gdb แล้ว ตอนนี้ทุกอย่างเป็นน้ำเกรวี่แล้ว   -  person B. Quanah Parker    schedule 18.11.2015


คำตอบ (1)


ตามที่ระบุไว้ในความคิดเห็น ฉันแค่ต้องอัปเดตเวอร์ชัน gdb ของฉัน ซึ่งฉันทำผ่าน Cygwin ตอนนี้ฉันใช้ gdb เวอร์ชัน 7.9.1-1 โดยมี gfortran เวอร์ชันเดียวกันกับเมื่อก่อน

person B. Quanah Parker    schedule 18.11.2015